Unity进阶----AssetBundle_01(2018/10/30)
AssetBundle作用和定义
1).AssetBundle是一个压缩包包含模型、贴图、预制体、声音、甚至整个场景,可以在游戏运行的时候被加载;
2).AssetBundle自身保存着互相的依赖关系;
AssetBundle使用相关API:
BuildPipeline.BuildAssetBundles(_path, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
AssetBundle ab = AssetBundle.LoadFromFile("AssetBundles/scene/wall.unity3d");
GameObject wallPrefab = ab.LoadAsset<GameObject>("CubeWall"); Instantiate(wallPrefab);
AssetBundle本地文件压缩加载使用代码:
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class Loding : MonoBehaviour {
- void Start ()
- {
- string _abPath = Application.streamingAssetsPath + "\\windows\\123";
- string _bpath = Application.streamingAssetsPath + "\\Windows\\ziyuab";//依赖关系资源加载路径
- AssetBundle xt = AssetBundle.LoadFromFile(_abPath);
- AssetBundle.LoadFromFile(_bpath);// 依赖关系资源加载
- if (xt == null)
- {
- Debug.Log("加载ab出错!!!");
- return;
- }
- GameObject tempObj = xt.LoadAsset<GameObject>("Cube");
- if (tempObj != null)
- {
- Instantiate(tempObj);
- }
- else
- {
- Debug.Log("加载该物体出错!!!");
- }
- StartCoroutine("Creat",xt);
- }
- void Update ()
- {
- }
- //携程是用来说明qw.Unload是释放内存的作用
- IEnumerator Creat (AssetBundle qw)
- {
- yield return new WaitForSeconds();
- qw.Unload(false);//false无变化,true时移出身上的东东(项目)
- Debug.Log("begin");
- yield return new WaitForSeconds();
- Instantiate(qw.LoadAsset<GameObject>("Sphere") );//报错是因为内存删除ab包
- }
- }
ab.Unload(true); --> 从项目和内存中都干掉
ab.Unload(false); --> 只干掉内存
知识点
UI 都采用动态绑定
WWW www = new WWW(ABURL)
AssetBundle ab = www.assetBundle;
AB包 是一个特殊格式的压缩包 关于unity资源都能压缩 不包含代码的 UI 模型 音乐
热更新: 不干掉原来的进行更新(打补丁)
1. 进行AB包的时候进行属性设置
2. 将设置好的属性(预制体...) 压缩成为一个特定的文件 代码压缩的!!!
3. 放置到web/gameserver上面
4. 客户端经过检验之后下载
5. 下载之后解压实例化
编译器扩展: BuildAssetBundleTool
1. 在editor目录下
2. AssetBundle的名字就是压缩包的名字和实质内容基本无关!
3.代码:
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEditor;
- public class BuildTools
- {
- [MenuItem("AssetBulidTools/BuildAB")]//建立编译器扩展
- public static void buliding()
- {
- string _ABpath = Application.streamingAssetsPath + "\\windows";
- //检测是否存在
- BuildPipeline.BuildAssetBundles(_ABpath,BuildAssetBundleOptions.None,BuildTarget.StandaloneWindows64);
- //这两行代码自动检测有AssetBundle标签的预制体,图片,音源等,并进行资源压缩.
- }
- }
Unity进阶----AssetBundle_01(2018/10/30)的更多相关文章
- 2018.10.30 bzoj4942: [Noi2017]整数(线段树压位)
传送门 直接把修改的数拆成logloglog个二进制位一个一个修改是会TLETLETLE的. 因此我们把303030个二进制位压成一位储存在线段树里面. 然后维护区间中最靠左二进制位不为0/1的下标. ...
- 2018.10.30 NOIp模拟赛T2 数字对
[题目描述] 小 H 是个善于思考的学生,现在她又在思考一个有关序列的问题. 她的面前浮现出一个长度为 n 的序列{ai},她想找出一段区间[L, R](1 <= L <= ...
- 2018.10.30 NOIp模拟赛 T1 改造二叉树
[题目描述] 小Y在学树论时看到了有关二叉树的介绍:在计算机科学中,二叉树是每个结点最多有两个子结点的有序树.通常子结点被称作“左孩子”和“右孩子”.二叉树被用作二叉搜索树和二叉堆.随后他又和他人讨论 ...
- Unity进阶----AssetBundle_03(2018/11/07)
1. 为啥有AB包? 因为资源需要更新, 避免更新一次打包一次 动态修改. 2. AB包注意啥? 依赖关系 找依赖关系应该找到对应的平台!!! 3. 打包策略是分场景打包 若文件被文件夹包含打包出来的 ...
- 2018.10.30 NOIP训练 【模板】树链剖分(换根树剖)
传送门 纯粹是为了熟悉板子. 然后发现自己手生了足足写了差不多25min而且输出的时候因为没开long longWA了三次还不知所云 代码
- 2018.10.30 uoj#273. 【清华集训2016】你的生命已如风中残烛(组合数学)
传送门 组合数学妙题. 我们把这mmm个数都减去111. 然后出牌的地方就变成了−1-1−1. 然后发现求出每个位置的前缀和之后全部都是非负数. 考虑在最后加入一个−1-1−1构成一个m+1m+1m+ ...
- 2018.10.30 NOIP模拟 有环无向图(dijkstra+巧妙建图)
传送门 建图巧妙啊. 对于每个点的出边,我们将它们排序之后依次连边. 这样可以把O(m2)O(m^2)O(m2)的边数变成O(m)O(m)O(m)的了. 连的权值就是max(edgemax(edgem ...
- 2018.10.30 NOIP模拟 字胡串(单调栈+容斥)
传送门 对于每个点,用单调栈求出它左右第一个比他大的位置. 然后对每个点O(logai)O(log_{a_i})O(logai)求出第一个拥有跟它不同二进制位的位置. 然后容斥一下就行了. 代码
- 2018.10.30 NOIP模拟 排列树(树形dp+组合数学)
传送门 考试的时候乱搞过了. 其实题目就是让你求拓扑排序方案数. 直接树形dpdpdp然后组合数转移一下就行了. 乱搞代码
随机推荐
- 时间序列函数resamlpe详解
resample与groupby的区别:resample:在给定的时间单位内重取样groupby:对给定的数据条目进行统计 函数原型:DataFrame.resample(rule, how=None ...
- 有关于 java native方法
看java源码时,经常看到native方法后,就没有具体的是实现了. 以前一直有疑惑,今天查了查,看到前辈们的博文才明白: Java的native方法http://blog.csdn.net/wike ...
- Java线程安全队列BlockingQueue
线程安全队列BlockingQueue 用法跟普通队列没有区别,只是加入了多线程支持. 这里主要说说add和put,以及poll和take的区别: add和put都是用来忘队列里面塞东西的,而poll ...
- 练习:javascript分享划过简单效果
利用目标点判断速度speed正负值.利用目标点函数封装传参, <!doctype html> <html lang="en"> <head> & ...
- IDEA 代码规范插件
前言 在工作过程中,每个人的代码习惯都不同,在一起工作做同一个项目,如果按照自己的习惯来,有可能造成代码维护困难,开发进度缓慢等. 代码规范的重要性 谷歌发布的代码规范中指出,80% 的缺失是由 20 ...
- .net core 添加 Swagger
1.新建一个Core项目 添加nuget包:Swashbuckle.AspNetCore 添加Startup文件: 先引用: using Swashbuckle.AspNetCore.Swagger; ...
- XL4001 典型应用电路
典型的应用电路如下: 中文数据手册:https://wenku.baidu.com/view/98ad2ed86f1aff00bed51ec7.html 在做毕设的时候用到的一款350ma的DC/DC ...
- SQL Server - case when...then...else...end
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex ' THEN '男' ' THEN '女' ELSE '其他' END --Case搜索函数 ' T ...
- 绑定bindchange事件的微信小程序swiper闪烁,抖动问题解决,(将微信小程序切换到后台一段时间,再打开微信小程序,会出现疯狂循环轮播,造成抖动现象)
微信小程序开发文档-组件-swiper后面追加的新闻如上图所示: 如果在bindchange事件给swiper的current属性对应的值{{current}}赋值,就会造成抖动现象. bindcha ...
- OrCAD Capture CIS 16.6 将版本16.6的设计文件另存为版本16.2的设计文件
操作系统:Windows 10 x64 工具1:OrCAD Capture CIS 16.6-S062 (v16-6-112FF) 启动OrCAD Capture CIS,打开.dsn设计文件,右击该 ...