Unity3d资源包的使用心得
大学毕业头一年就开始着手做资源管理,不过一开始都是学习使用assetbundle,怎样打资源包,资源包里面资源的一些要求,怎样简单的处理依赖关系,让资源包尽量小一点,打资源包简单,就是把要添加的文件添加进来,然后打包就行了。
一开始我们采用的打资源包的选项是这么设置的
BuildAssetBundleOptions options = BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.DeterministicAssetBundle | BuildAssetBundleOptions.DisableWriteTypeTree | BuildAssetBundleOptions.UncompressedAssetBundle;
这样打的资源包是没有经过压缩的,所以体积会非常的大,然后所有的依赖关系都包括在资源包里面,在使用的时候直接加载,用AssetBundle.CreateFromFile("路径")
这种方法就可以直接同步的创建资源包,速度很快,资源包大的解决方式是参考了雨松大神的Unity3D研究院之Assetbundle的实战(六十三) 来进行处理的,文章最后面写了步骤,先打资源包,然后LZMA压缩并将资源包上传到你的服务器上面供下载,下载到本地之后,在app里面对资源进行解压,游戏里面直接createformfile就可以使用,解压的过程可能会慢一些,不同的机器性能不同,这样主要是为了减少用户下载资源等待时间,才采取的压缩,最终解压完成之后,资源包依然很大,所以在IOS那头,你的游戏安装包会很大。但是这种方式内存占用量小,加载创建速度快,同步创建,我觉得这种方式不错,奈何显示的包体太大。
再后来我们采用的打包选项是这么设置的
BuildAssetBundleOptions options = BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.DeterministicAssetBundle | BuildAssetBundleOptions.DisableWriteTypeTree;
只是将资源包压缩的那个选项给去掉了,资源包果然缩小了好多,相比一开始,至少6倍左右的被缩小,因为这个方法,在一开始打资源报的时候,unity就自动给你压缩了,省的你再处理一遍,通过这种方式打出的资源包,体积小,可以采用
byte[] stream = Global.GetAssetbundleFileInfoByName(_filepath);
bundle = AssetBundle.CreateFromMemoryImmediate(stream);
这种方式来进行加载,但是由于安卓平台jar包的限制,就得采用www的方法,从包体里面取出资源包,然后进行创建,这样就会存在一个异步的过程,然后再调用这种方法,创建资源包。这种方式较上一种在内存占用,进游戏速度上都明显落后,内存占用变高很多,速度也稍微慢了一点,但是唯一的好处是,资源包体积很小,这对于用unity开发的确不错,但是我并不喜欢啊。上面是我先把资源包里面的数据都读出来了,也可以不那样,采用
AssetBundleCreateRequest acr = AssetBundle.CreateFromMemory(stream);
yield return acr;
bundle = acr.assetBundle;
这种方式进行创建,效果是一样的。
我们项目里面主要用的是ngui,所以用到了很多Label组件,给上面设置了字体,然后打包的时候,字体关系的依赖非常的多,所以就采用个一个脚本来给Label的Font进行设置,最后再打包的时候,所有的Label组件上面的字体资源都不进行设置,这样打包资源就又小了些,挺好的。
using UnityEngine;
using System.Collections;
public class UILabelFontSet : MonoBehaviour {bool isUsedFont = false;public enum UILabelFont{None,Msyh,Fzzdhjw,}AssetBundle ab = null;public UILabelFont mEffectStyle = UILabelFont.None;void Update () {if (!isUsedFont ){if (mEffectStyle == UILabelFont.None){return;}if (mEffectStyle == UILabelFont.Msyh){Font _mFont = null;UILabel label = this.gameObject.GetComponent<UILabel>();_mFont = (Font)ModulManager.NewOpenFount("ResourcesEx/Font/msyh.ttf", "Font");label.trueTypeFont = _mFont;isUsedFont = true;}else if (mEffectStyle == UILabelFont.Fzzdhjw){UILabel label = this.gameObject.GetComponent<UILabel>();Font _mFont =null;_mFont = (Font)ModulManager.NewOpenFount("ResourcesEx/Font/FZZDHJW.TTF", "Font");label.trueTypeFont = _mFont;isUsedFont = true;}}}
}
这样在程序运行的时候,先加载资源包,然后就可以根据你的设置用不同的字体喽,哈哈。
在使用了资源报之后,都要对现在的所有用的资源,像图集,脚本,预设进行动态加载,动态关联部分,这样才好,哈哈
又来了个新同事,又得给他讲lua,哈哈
Unity3d资源包的使用心得相关推荐
- 独立游戏开发必备!8个效果不错的Unity3D 免费模型资源包
1.Unity3D RTS策略游戏 方块人风格资源包 KUBIKOS – RPG – RTS 20 Animated Cube Mini Units v1.0 http://www.idoubi.ne ...
- Unity3D官方资源包的下载以及从Asset Store下载后存在的位置查找
自Unity5开始后自带的资源包是不提供的了,需要自行下载. //================================== 下载地址标准资源包 //==================== ...
- Unity3D 解决 “SpeedTree materials need to be regenerated.” 导入资源包时出现的错误
我的Unity版本:2019.3.2f1 在导入标准资源包时出现了以下错误: 解决办法:去Unity的Asset Store下载标准资源包即可,其他地方下载的版本可能是不兼容. 我的标准资源包是一个群 ...
- Unity3d资源反编译. AssetBundle格式简析+简单应用+爬坑
=================== Unity3d资源反编译工具 DisUnity ================ 源码:https://github.com/ata4/disunity 需要 ...
- 《.NET 4.0面向对象编程漫谈》前言及配套资源包发布
<.NET 4.0面向对象编程漫谈>前言及配套资源包发布 注: 今天拿到了出版社快递送来的<.NET 4.0面向对象编程漫谈>(基础篇和应用篇)的24小时样书,相信读者很快就能 ...
- Unity3D资源加载与内存管理
Unity3D资源加载与内存管理 Unity 3D中的资源加载 AssetBundle运行时加载: Unity3D占用内存太大怎么解决呢? 关于内存管理 举两个例子帮助理解 额外问题 Hog的评论引用 ...
- 王者荣耀s22服务器未响应是什么意思,王者荣耀s22资源包升级失败 s22解析包出现问题解决方法...
王者荣耀s22资源包升级失败怎么解决?相信大家都知道王者荣耀S22破晓版本在今日14日正式推出,一时间大量玩家去更新游戏,不过有一小部分玩家出现了更新问题,那就是资源包升级错误,关于这个问题,官方也给 ...
- iOS架构-静态库.framework(引用第三方SDK、开源库、资源包)(9)
前面介绍了 静态库.a依赖第三方静态库.a的制作 静态库.framework之依赖第三方库(Cocoapods进行管理) 今天课题: 静态库.framework(引用第三方SDK.framework. ...
- maven工程指定web资源包,创建jsp文件
进入项目的project structure. 选择web. 在右侧增加web资源包路径
- 小米4硬改教程_小米手环3美化/修改资源包教程(含加入二维码教程)
小米手环3美化/修改资源包教程(含加入二维码教程) 注意:本教程侧重于讲刷资源包res,不过多的进行刷固件的讲解(并且不建议刷固件,容易砖,一般修改res已经可以达到你预期的效果了). 1.2更新 温 ...
最新文章
- C++知识点12——构造函数初步
- 深度学习笔记 第五门课 序列模型 第三周 序列模型和注意力机制
- 【原创】backbone1.1.0源码解析之Events
- idea2020shezhi代码检查级别_优秀的模糊测试代码是如何炼成的?
- 逆波兰表达式[栈 C 语言 实现]
- 搭建本地ubuntu镜像服务器(arm版)
- Git 入门 ---- Git 与 SVN 区别
- 从研发角度谈存储技术的学习
- Django Form 详解
- win7仿win98电脑主题
- C语言超时错误,C语言题目运行得到超时错误
- Office 2010 文件验证
- vue实例练习和vue样式练习
- 苹果U盘格式化了怎么恢复
- thinkphp5拼接数组查询条件
- Arbitrary Style Transfer with Deep Feature Reshuffle
- 2021-01-06
- git 强行替换覆盖master分支
- delphi源码转换为C++ Builder源码
- 阅读报告Implementing arbitrary coined two-dimensional quantum walks via bulk optical interferometry