http://www.58player.com/blog-2537-85030.html

接上文,项目中因为需要UI热更新,所以我使用了AssetBundle这个解决方案. 
          
        一般来说,我们使用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");
        
                    // 生成assetbundle
                    BuildPipeline.BuildAssetBundle(objs[0], null,
                           _savepath,
                           m_option,
                           EditorUserBuildSettings.activeBuildTarget);
                }
                else
                {
                    // 获取保存路径
                    _savepath = EditorUtility.SaveFolderPanel("Save Resources", "", "");
        
                    // 生成assetbundle
                    for (int i = 0; i < objs.Length; ++i)
                    {
                        BuildPipeline.BuildAssetBundle(objs[i], null,
                            _savepath + "/" + objs[i].name + ".assetbundle",
                            m_option,
                            EditorUserBuildSettings.activeBuildTarget);
                    }
                }
            }
        }
         
        这就是我最开始写的将NGUI预制件打包成Assetbundle的方法. 这个方法看起来没啥问题,使用WWW流加载也没有问题. 但是真的如此吗?   
        其实我一开始也没有注意到AssetBundle中的资源依赖关系这个问题. 
        因为我最开始生成的几个Assetbundle0均是ngui演示中的几个预制件,生成出来的大小比较正常一般几K到几十K. 
          
        于是我天真的以为就这么用就好了. 
        直到我开始做几个需要中文文本支持的界面时,才发现我跳进了一个小坑. 
          
        TODO:................. 
          
        PS:这个Blog嘛 不算啥专业的技术Blog,只是随笔.

[Unity3d][NGUI]打包NGUI预制件成Assetbundle 两种思路.的更多相关文章

  1. 使用 CUDA 进行计算优化的两种思路

    前言 本文讨论如何使用 CUDA 对代码进行并行优化,并给出不同并行思路对均值滤波的实现. 并行优化的两种思路 思路1: global 函数 在 global 函数中创建出多个块多个线程对矩阵每个元素 ...

  2. C++关于数字逆序输出的两种思路,及字符串逆序输出

    C++关于数字逆序输出的两种思路,及字符串逆序输出 作者:GREATCOFFEE 发布时间:NOVEMBER 15, 2012 分类:编程的艺术 最近在跟女神一起学C++(其实我是不怀好意),然后女神 ...

  3. php 冒泡排序的两种思路以及优化

    php冒泡排序,两种思路,时间复杂度都是O(n^2),当然最优的时间复杂度就是O(n),以下说的都是正序排列(倒序的话,把内层循环的大于号换成小于号就好了) 第一种冒泡排序 思路就是把第一个数跟所有的 ...

  4. 第七篇:使用 CUDA 进行计算优化的两种思路

    前言 本文讨论如何使用 CUDA 对代码进行并行优化,并给出不同并行思路对均值滤波的实现. 并行优化的两种思路 思路1: global 函数 在 global 函数中创建出多个块多个线程对矩阵每个元素 ...

  5. Java实现快排+小坑+partition的两种思路

    在做一道剑指Offer的题的时候,有道题涉及到快排的思路,一开始就很快根据以前的思路写出了代码,但似乎有些细节不太对劲,自己拿数据试了下果然.然后折腾了下并记录下一些小坑,还有总结下划分方法parti ...

  6. 点击页面div弹窗以外隐藏的两种思路

    在本文为大家介绍两种思路实现点击页面其它地方隐藏该div,第一种是对document的click事件绑定事件处理程序.. 第一种思路分两步 第一步:对document的click事件绑定事件处理程序, ...

  7. 把JSON数据载入到页面表单的两种思路(对easyui自带方法进行改进)

    #把JSON数据载入到页面表单的两种思路(对easyui自带方法进行改进) ##背景 项目中经常需要把JSON数据填充到页面表单,一开始我使用easyui自带的form load方法,觉得效率很低,经 ...

  8. Go开发Struct转换成map两种方式比较

    最近做Go开发的时候接触到了一个新的orm第三方框架gorose,在使用的过程中,发现没有类似beego进行直接对struct结构进行操作的方法,有部分API是通过map进行数据库相关操作,那么就需要 ...

  9. golang 开发 Struct 转换成 map 两种方式比较

    原文链接:https://www.jianshu.com/p/81c4304f6d1b 最近做Go开发的时候接触到了一个新的orm第三方框架gorose,在使用的过程中,发现没有类似beego进行直接 ...

随机推荐

  1. springmvc @responseBody自动打包json出现错误(外键查询死循环)问题

    在外键字段的get方法上加入@JsonIgnore

  2. Order Independent Transparency

    http://on-demand.gputechconf.com/gtc/2014/presentations/S4385-order-independent-transparency-opengl. ...

  3. window.onscroll页面滚动条滚动事件

    用途一:"返回顶部": window.onscroll = function(){ var t = document.documentElement.scrollTop || do ...

  4. Mac 使用Sublime Text 3搭建java环境

    运行效果 运行的时候会在桌面上生成一个 .class文件,可以通过配置文件将生成的.class文件删除. 参考: java环境配置:http://developer.51cto.com/art/201 ...

  5. Docker Compose to CoreOS

    taken from https://docs.docker.com/compose/install/ the only thing is that /usr is read only, but /o ...

  6. .NET获取服务器信息,如服务器版本、IIS等

    .NET获取服务器信息,如服务器版本.IIS等 .NET获取服务器信息,如服务器版本.IIS版本.数据库大小.网站系统空间占用大小.网站部署路径等等 .NET获取系统环境信息 #region 返回操作 ...

  7. 使用 Elmah一些要注意的问题

    http://www.cnblogs.com/apsnet/archive/2012/04/28/2474730.html 1. Elmah使用后,在发布时,要区分IIS6和IIS7 ,IIS6下 H ...

  8. Lua之元表

    Lua之metatable 一.元表 Lua中的每个值都有一套预定义的操作集合,也可以通过metatable(元表)来定义一个值的行为,metatable包含了一组meatmethod(元方法). L ...

  9. linux下文件结束符

    linux下文件结束符,我试过了所有的linux,发现其文件的结束符都是以0a即LF结束的,这个是操作系统规定的,windows下是\r\n符结束,希望可以帮助大家. -------------转:来 ...

  10. Struts2验证框架实例

    今天写了个Struts验证框架的实例,总算把验证框架弄清楚了. 上一篇Struts实例的action没有继承ActionSupport类,虽然也可以实现action的功能,但是却不能应用Struts提 ...