[Unity3d][NGUI]打包NGUI预制件成Assetbundle 两种思路.
2016-01-24 15:56
375 查看
接上文,项目中由于须要UI热更新,所以我使用了AssetBundle这个解决方式.
一般来说,我们使用AssetBundle生成资源包经常使用的方案是例如以下这么用:
这就是我最開始写的将NGUI预制件打包成Assetbundle的方法.
这种方法看起来没啥问题,使用WWW流载入也没有问题.
可是真的如此吗?
事实上我一開始也没有注意到AssetBundle中的资源依赖关系这个问题.
由于我最開始生成的几个Assetbundle0均是ngui演示中的几个预制件,生成出来的大小比較正常一般几K到几十K.
于是我天真的以为就这么用就好了.
直到我開始做几个须要中文文本支持的界面时,才发现我跳进了一个小坑.
TODO:.................
PS:这个Blog嘛 不算啥专业的技术Blog,仅仅是随笔.
一般来说,我们使用AssetBundle生成资源包经常使用的方案是例如以下这么用:
using UnityEngine; using UnityEditor; /// <summary> /// 导出资源类 /// </summary> public class ExportGameResources { static BuildAssetBundleOptions m_option = BuildAssetBundleOptions.CollectDependencies | // 收集全部依赖关系 BuildAssetBundleOptions.DeterministicAssetBundle; /// <summary> /// 导出NGUI成Assetbundle /// </summary> [MenuItem("Assets/导出/资源")] static public void ExportNGUI() { // 获取编辑器中选择的项 Object[] objs = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets); // 没有选中项 if (objs.Length == 0) { return; } string _savepath = null; // 推断是多选还是单选 if (objs.Length == 1) { // 获取保存路径 _savepath = EditorUtility.SaveFilePanel("Save Resource", "", objs[0].name, "assetbundle"); if (!_savepath.Equals("")) { // 生成assetbundle BuildPipeline.BuildAssetBundle(objs[0], null, _savepath, m_option, EditorUserBuildSettings.activeBuildTarget); } } else { // 获取保存路径 _savepath = EditorUtility.SaveFolderPanel("Save Resources", "", ""); if (!_savepath.Equals("")) { // 生成assetbundle for (int i = 0; i < objs.Length; ++i) { BuildPipeline.BuildAssetBundle(objs[i], null, _savepath + "/" + objs[i].name + ".assetbundle", m_option, EditorUserBuildSettings.activeBuildTarget); } } } Debug.Log("导出成功,导出路径:" + _savepath); } }
这就是我最開始写的将NGUI预制件打包成Assetbundle的方法.
这种方法看起来没啥问题,使用WWW流载入也没有问题.
可是真的如此吗?
事实上我一開始也没有注意到AssetBundle中的资源依赖关系这个问题.
由于我最開始生成的几个Assetbundle0均是ngui演示中的几个预制件,生成出来的大小比較正常一般几K到几十K.
于是我天真的以为就这么用就好了.
直到我開始做几个须要中文文本支持的界面时,才发现我跳进了一个小坑.
TODO:.................
PS:这个Blog嘛 不算啥专业的技术Blog,仅仅是随笔.
相关文章推荐
- unity, StartCoroutine and StopCoroutine
- 【Unity Shader】Shadow Caster、RenderType和_CameraDepthTexture
- unity3d之刚体碰撞器和触发器的一些知识
- Unity学习之路(1)
- unity 安装
- 【Unity Shader】概述以及Diffuse shader和unity5新功能Standard shader
- Unity实现残影效果
- Unity 5.3配置开发环境、安卓环境
- Unity3D-NGUI动态加载图片
- unity ai car demo
- Unity5.3 AssetBundleName批量赋值
- unity学习笔记3
- unity Material之tilling和offset属性
- Unity3d的脚本类为什么要尽量避免继承MonoBehaviour类
- 初学unity(简单的视觉欺骗)
- Unity多线程(Thread)和主线程(MainThread)交互使用类——Loom工具分享
- Unity3D 的 Physics Materital
- [Unity插件]Behavior Designer
- unity中使用sur着色器编写卡通光照模型。
- 挑战Unity、UE4,曾戈祭出次世代VR引擎