u3d---打包资源AssetsBundle与读取

一:打包资源。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

public class AssetsBundle : MonoBehaviour {
   
    [MenuItem("Assets/Buid AssetBundle")]
    static void BuildAllAssetsBundles()
    {
        BuildPipeline.BuildAssetBundles("AssetBundle", BuildAssetBundleOptions.None,
        BuildTarget.StandaloneWindows);
        //用这句代码来打包这个文件
        //AssetBundle 代表文件名.也就是要提前在这个工程目录下创建一个AssetBundle的文件.
        //第二个参数(BuildAssetBundleOptions.None)表示 AssetBundle Build Option
        //第三个参数是平台
    }
}

MenuItem就是在Assets下多了个按钮,这个和编辑插件一样, 之后的语法buildPipeline这个似乎有些api弃用,必须把参数填全。

之后打包出来的东西就是资源文件下prefab 的inspector面板中 右下角位置。 注意这里的输出资源是同assets同级目录下。

打包完成后会多一个了:AssetBundle文件 以及.manifest文件。  无后缀的文件表示了当前打包的所有资源,  .mainfest文件则表示了我们打包的prefab的所有依赖的scripts等文件。


二:读取资源

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LoadAssetsBundle : MonoBehaviour {

    public string url;
    public string assetsName;
    IEnumerator Start() {
        WWW www = new WWW(url);
        yield return www;//等待www加载完成
        if (www.error!=null)
        {
            Debug.Log("net error");
        }
        else
        {
            AssetBundle bundle= www.assetBundle;
            Object obj= bundle.LoadAsset(assetsName);
            var t=Instantiate(obj);
            bundle.Unload(false);//true 全部卸载 false释放用过的  这里如果写true会发现纹理贴图不见了,是紫色的
        }
        www.Dispose();//释放资源
    }
}

其中url是读取的assetbundle:   注意如果是本地的则是(注意/字符)
file://D:/Battle/AssetBundle/player1.assetbundle
assetsName则是我们刚刚生成的 ,我这里是player1  

尝试着在自己的ftp上读取  url:

ftp://10.192.69.9/player1.assetbundle

这个就不用file:了


猜你喜欢

转载自blog.csdn.net/qq_33951440/article/details/80010224