| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Unity AssetBundle资源打包与资源加载 -> 正文阅读 |
|
[游戏开发]Unity AssetBundle资源打包与资源加载 |
AssetBundle是Unity自带的一种资源打包方式,可以把AssetBundle文件当做加密过的压缩包。 一般会编写一个扩展器工具用于打包AB资源。 AssetBundle资源打包前置条件设置:除了C#脚本外,我们选中的任何东西都会出现这个AB包设置界面。
?点击New...新建一个我们想要的名字(它会自动给你全转为小写格式),输入完名称后记得要回车保存一下; 旁边的是后缀,企业开发中常用的后缀有 unity3d,assetbundle,ab,其他自定义。 我这里定义为pedestal.ab,ULua的打包格式就是写死的assetbundle,请留意。 做完这些前置设置后,不管文件在哪个文件夹,它都会识别到然后打包走。看代码。 要放在文件夹里写个路径就会自动创建文件夹并保存在里面了。?
编辑器打包AB资源:1、在项目根文件夹下创建一个“Editor”目录,用于存放编辑器扩展脚本; 2、引入命名空间“UnityEditor”,且脚本不需要继承 MonoBehaviour; 3、编写一个静态无返回值的方法,用于打包AB资源; 4、在方法的上方添加一个“特性”:[MenuItem("menu/itemName")],这个特性可以在Unity菜单上显示我们编写的方法,menu是菜单的名字,itemName是关于这个方法的名字(可以随便写)。
? ?代码演示:BuildPipeline.BuildAssetBundles(路径, 选项, 平台); 参数分析: ①BuildAssetBundles:打包所有设置了 AssetLabels 的资源; ②路径:打包出来的 AssetBundle 文件存放的位置; ③选项:设置 AssetBundle 打包过程中的选项,None 表示忽略该选项; ④平台:AssetBundle 是平台之间不兼容的,IOS,Android 是两套资源;
? 资源加载:1、加载 AB 资源到内存 AssetBundle ab = AssetBundle.LoadFromFile("AB 包完整路径") 从一个完整的路径位置加载 AB 资源包到内存,返回一个 AssetBundle 对象; 2、从 AB 资源中获取资源 T resName = ab.LoadAsset<T>("游戏资源名称") 通过获取到的 AssetBundle 对象的“加载资源”方法,从 AssetBundle 对象内获取对应的游戏物体资源,并且返回该资源。效果类似于使用 Resources.Load 加载一个资源; 3、实例化资源 和使用 Resources.Load 加载到内存中的资源一样,直接实例化生成该物体。
总结:其实与Resources方法的不同在于,多了一步先加载到内存中,然后再从AB包中取出我们要用到的资源。 扩展:当你打包完之后会多出了2个文件 ? 它其实是AssetBundle文件的[目录],里面保存了所有ab资源包的路径地址(包含名字),第一个是给计算机看的,第二个.manifest文件是给我们人看的。 |
|
|
上一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 10:29:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |