Unity 加载资源

直接把资源放在unity的目录里是不行的 打包的时候 不会打进去
要想打包到apk里 只有两种选择
1 放到 StreamingAssets 里 – Application.streamingAssetsPath
2 场景里有引用 他会自动打包进apk里

资源放到预制体里 并且预制体没在场景里 也不打包

先安装
https://github.com/Unity-Technologies/AssetBundles-Browser.git
使用文档
https://docs.unity.cn/Packages/[email protected]/manual/index.html

创建两个ab包
1包是建模
2包是预制体 里面1包里的模型

也就是说 包2 是依赖 包1 的

如果只加载包2 unity是不会自动加载包1的
所以需要自己加载依赖关系
在这里插入图片描述
就是这样的
手机里没找到相对应的位置
apk安装包解压缩后 可以看到 ab包 在assets里
在这里插入图片描述
好 现在需要知道 ab包之间的依赖 咋办

string urlmf = Path.Combine(Application.streamingAssetsPath, "Android");
AssetBundle ab3 = AssetBundle.LoadFromFile(urlmf);
AssetBundleManifest abManifest = ab3.LoadAsset<AssetBundleManifest>("assetbundlemanifest");
string[] str1 = abManifest.GetAllDependencies("ab1");

注意
这个 urlmf 是整个所有ab包的 也就是那个整个文件夹的
不是单独某个ab包的 (单独的加载不到)
举个例子 你生成的是安卓的ab包
在这里插入图片描述
那么 你会发现
在生成的ab包里 有一个 Android.manifest 文件
打开后 里面其实是 ab包之间的依赖关系
在这里插入图片描述
那如果现在想发包
哪写内容放到StreamingAssets 呢?
StreamingAssets 的特性是只读的
如果你把StreamingAssets 里的内容热更新到 persistent 那就会存在两份数据
去YooAsset群里问了下
群主的意思是

有一个原则,你可以参考。:首包保证玩家可以进入游戏体验15分钟即可。
其余内容,可以后续更新。
后续更新有2种方式,1:边玩边下,2:解锁新地图或新副本下载。

如果ab包在服务器怎么办
加载就行啦~

StartCoroutine(this.loadAB());
IEnumerator loadAB()
{
    
    
	UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(@"http://10.0.16.118:5000/ab2");
    yield return request.SendWebRequest();
    GameObject go1 = DownloadHandlerAssetBundle.GetContent(request).LoadAsset<GameObject>("PrefabA");
    GameObject.Instantiate(go1);
}

现在
如果你需要把下载到的ab包 存到 persistentDataPath 里 咋办?
如果用普通下载到的 request.downloadHandler.data 直接 FileStream 写入是不行的
会报 NotSupportedException: Raw data access is not supported for asset bundles

需要这么写

扫描二维码关注公众号,回复: 14652057 查看本文章
UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(@"http://10.0.16.118:5000/ab2");
FileInfo fileInfo = new FileInfo(Path.Combine(Application.persistentDataPath, "ab2"));
var handler = new DownloadHandlerFile(fileInfo.FullName);
request.downloadHandler = handler;
request.disposeDownloadHandlerOnDispose = true;

重点是 DownloadHandlerFile

可以查看文件
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_38913715/article/details/127517240