本帖最后由 海莉zhe 于 2017-1-11 10:35 编辑 今天小编继续之前的AssetBundle的分享,在IOS上如何打包Assetbundle和加载Assetbundle资源,我们知道有很多类似的文章,但是还是想简单和大家一起学习一下,希望对一些刚刚学习unity3d的同学有帮助。 好吧!废话不多讲,我直接上图上操作哈! ![]() 1.首先还是新建一个unity3d项目,导入需要资源文件,我这边导入一个asset store 模型插件unity-chan资源。 2.第一步,我们先创建打包AssetBundle 的环境的,项目需要一个内置的文件夹Editor (必须的,这是为了可以在项目编辑器中打包AssetBundle资源),并且把AssetBundleEditor.cs组件类放在该文件下面。 [ 需要注意的是 :不同的平台参数是不一样的,IOS平台上Assetbundle打包时需要使用 BuildTarget.iPhone 参数。] ![]() ![]() AssetBundleEditor.cs 代码如下: [C#] 纯文本查看 复制代码
3.第二步,我们把打包好的AssetBundle资源解包出来,现在在场景中新建一个LoadAssetBundle的对象,实现加载asset bundle资源的脚本。 LoadAssetBundle.cs 代码如下: [C#] 纯文本查看 复制代码
4.其实从运行项目的时候,我们会发现模型的材质加载不正常,它丢失了材质,然后我们找到的解决的方法是在Edit->Project Setting->Graphics 设置中的Always Include Shaders 中增加模型的Shader,Shader配置好以后,记得重新AssetBundle打包模型。 ![]() ![]() ![]() 5.好吧,我们Build一个版本在真机上,这个涉及到IOS 开发部署流程,有兴趣的同学可以去研究一下,而我这边直接操作啦! 5.0 首先BuildSetting 切换平台到IOS; ![]() 5.1 直接在真机上的效果。 ![]() 最后,我们来看一下www访问方式: (1).非缓存方式:WWW w=new WWW(url:string); 通过创建一个WWW实例来对AssetBundle文件下载,下载后的AssetBundle文件将不会进入Unity的缓存区。 (2)缓存方式:WWW w=WWW.LoadFromCacheOrDownload(url:string,version:int); 下载后的AssetBundle会自动被保存到Unity引擎的缓存区内,该方法是Unity推荐的AssetBundle下载方式。下载AssetBundle的时候,该接口会先在本地缓存中查找该文件,看其之前是否被下载过,如果下载过,则直接从缓存中加载,如果没有,则从服务器尽享下载。这样做的好处是可以节省AssetBundle文件的下载时间,从而提高游戏资源的载入速度(还可以节省下载流量)。 注意:但是WWW.LoadFromCacheOrDownload(url:string,version:int)在测试情况下你可能会频繁的打包生成Assetbundle,如果忘记改版本号的话可能会读取之前的缓存,可能就会看不到新的效果,所以建议在bunild Assetbundle的时候强制清空一下缓存。 Caching.CleanCache(); 学习交流群:575561285
|
|