博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Unity3d][NGUI]打包NGUI预制件成Assetbundle 两种思路.
阅读量:6269 次
发布时间:2019-06-22

本文共 2058 字,大约阅读时间需要 6 分钟。

接上文,项目中由于须要UI热更新,所以我使用了AssetBundle这个解决方式.

一般来说,我们使用AssetBundle生成资源包经常使用的方案是例如以下这么用:

using UnityEngine;using UnityEditor;/// /// 导出资源类/// public class ExportGameResources{    static BuildAssetBundleOptions m_option = BuildAssetBundleOptions.CollectDependencies |  // 收集全部依赖关系                                              BuildAssetBundleOptions.DeterministicAssetBundle;    ///     /// 导出NGUI成Assetbundle    ///     [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,仅仅是随笔.

转载地址:http://bfppa.baihongyu.com/

你可能感兴趣的文章
前端如何接收 websocket 发送过来的实时数据
查看>>
JavaWeb下载文件response
查看>>
Laravel的三种安装方法总结
查看>>
SpringMVC加载配置Properties文件的几种方式
查看>>
C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginat...
查看>>
java 项目相关 学习笔记
查看>>
numpy opencv matlab eigen SVD结果对比
查看>>
WPF获取某控件的位置,也就是偏移量
查看>>
Boost C++ 库 中文教程(全)
查看>>
solr查询优化(实践了一下效果比较明显)
查看>>
jdk目录详解及其使用方法
查看>>
说说自己对RESTful API的理解s
查看>>
通过layout实现可拖拽自动排序的UICollectionView
查看>>
服务器错误码
查看>>
javascript中的面向对象
查看>>
Splunk作为日志分析平台与Ossec进行联动
查看>>
yaffs文件系统
查看>>
Mysql存储过程
查看>>
NC营改增
查看>>
Lua
查看>>