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. CSS3-实现单选框radio的小动画

    在微信上看到一个教程文,觉得制作的小动画还是很有意思的,自己也试验了一下.一开始动画怎么都不执行(我用的HB),因为内置浏览器对css3的不兼容.加上各种浏览器前缀后就好了.但是旋转那个效果,在HB里 ...

  2. Maven中的dependencyManagement 意义

    1.在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器. 2.pom.xml文件中,jar的版本判断的两种途径 1:如果dependenci ...

  3. css003 选择器:明确设置哪些样式

    css003 选择器:明确设置哪些样式 1.每个样式的两个部分:选择器和声明块 1.标签选择器:整体控制 2.类选择器:精确控制(.+字母.数字.连字符或下划线) Css允许的类名为.+字母.数字.连 ...

  4. angularjs中ng-change使用方法

    ng-change需与ng-model结合使用,官网说明如下:Note, this directive requires ngModel to be present. <label for=&q ...

  5. jquery的$.extend()、$.fn和$.fn.extend()

    一种是类级别的插件开发,即给jquery添加新的全局函数,相当于给jquery类本身添加方法.如$.ajax()等,这就是用$.extend()实现 jquery的全局函数就是属于jquery命名空间 ...

  6. SQL日期格式转换

    CONVERT(nvarchar(20), [Date],101) as 'Date'    10/20/2016 CONVERT(nvarchar(20), [Date],102) as 'Date ...

  7. Android学习笔记——ProgressBar

    该工程的功能是实现进度条的显示,按以下按钮进度条增加10% 以下代码是MainActivity.java中的代码 package com.example.progressbar; import and ...

  8. 使用 Object.create 创建对象,super 关键字,class 关键字

    ECMAScript 5 中引入了一个新方法:Object.create().可以调用这个方法来创建一个新对象.新对象的原型就是调用 create 方法时传入的第一个参数: var a = {a: 1 ...

  9. js日期计算及快速获取周、月、季度起止日,获取指定日期周数以及星期几的小例子

    JS获取日期时遇到如下需求,根据某年某周获取一周的日期.如开始日期规定为星期四到下一周的星期五为一周. 格式化日期: function getNowFormatDate(theDate) { var ...

  10. ecshop修改产品详情 折扣倒计时时间

    文件:lefttime.js  位置:/js/lefttime.js 要求:去掉倒计时时间的 “天”数 原代码 ) { Temp = dateLeft + _day + hourZero + hour ...