网站seo基础,wordpress 文章导出,开发公司更换物业公司的请示,宁波五金网站建设需求#xff1a; 在移动开发中#xff0c;手动控制资源的加载、释放和热更新#xff0c;是很有必要的。 而Unity通过AssetBundle可以实现该需求#xff0c;但是如果项目资源多起来的话一个个手动打包成AssetBundle则很麻烦。 而本文正为此提供一套一键打包的方案。 资源分… 需求 在移动开发中手动控制资源的加载、释放和热更新是很有必要的。 而Unity通过AssetBundle可以实现该需求但是如果项目资源多起来的话一个个手动打包成AssetBundle则很麻烦。 而本文正为此提供一套一键打包的方案。 资源分类、加载和实例化过程 分类资源 先将游戏资源分类这里说的分类不是按资源类型声音、贴图等来分而是按照打包进同一个AssetBundle的资源来分。 一般游戏按照使用频率、游戏流程、资源大小来分到不同的AssetBundle中。 举个例子一个跑酷游戏可将资源分为 开始界面主界面关卡一资源关卡二资源主界面和各关卡的共享资源如角色服装各关卡间的共享资源如血条金币。注意这里说的资源是图片模型声音等一些体积较大的文件。 加载资源 游戏流程中AssetBundle的加载及卸载 将“场景内所有GameObject”变为Prefab并打打包成AssetBundle: 在上一步中只是将资源打包成AssetBundle而驱动游戏进行的游戏逻辑场景上的GameObject则没做处理。 这样的话会导致打包出来的游戏包重复包含资源AssetBundle和场景GameObject引用的资源重复。 所以我们需要将场景上的GameObject也一并打包成AssetBundle在游戏真正运行时才加载该AssetBundle并实例化。 拿unity 2d例程2DPlatformer做说明即将Scene里的所有文件变为一个GameMain.Prefab并导出为AssetBundle。 用于在之后的游戏运行后加载并实例化。 那么上一步的流程将会变为 标记项目资源 分类加载的思路有了现在只差一个自动将所有资源打包成AssetBundle方法。 我们需要借助Asset LabelsUnity的标签系统。 思路是按资源的不同分类前文提及的分类方式来标记每个资源。 举个例子 上面4个资源属于关卡1的资源因此我将他们同标记为AsRes_Level1 他们将会一起打入AsRes_Level1.assetbundle包中以备游戏中加载。 需要注意的是其中AsRes_是固定标识以便打包脚本分辨。 用这种方法则可将游戏资源一一归类。 但是我们还有一个麻烦就是需要先将比较笨重的资源图片声音模型先打包然后再将驱动逻辑例如前面说的GameMain.Prefab打包 只有按这样的顺序打包才能使驱动逻辑引用到之前的打包的美术声音资源。 解决方法也比较简单将驱动逻辑标记为AsPack_即可。 OK就这样将整个项目的资源标记好之后就可以进行一键打包了。 例程 为了更好的说明我利用Unity的2DPlatformer做了一个样板工程。 其中 Editor/ResPacker.cs 是打包脚本会在菜单Assets下新建“Build All Assets To Bundle” 用于一键打包。 _Loader/Test_Loader.unity 是测试场景用于加载位于StreamingAssets下的AssetBundle并实例化‘驱动逻辑’GameMain。 例程下载。 注意: 在例程中有一个Bug,在编辑器中导入AssetBundle包的话会使Sprite 上Sorting Layer变为Default而导致图层混乱而Build这个场景出来之后再运行则不会。