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)的更多相关文章

  1. 2018.10.30 bzoj4942: [Noi2017]整数(线段树压位)

    传送门 直接把修改的数拆成logloglog个二进制位一个一个修改是会TLETLETLE的. 因此我们把303030个二进制位压成一位储存在线段树里面. 然后维护区间中最靠左二进制位不为0/1的下标. ...

  2. 2018.10.30 NOIp模拟赛T2 数字对

    [题目描述] 小 H 是个善于思考的学生,现在她又在思考一个有关序列的问题.        她的面前浮现出一个长度为 n 的序列{ai},她想找出一段区间[L, R](1 <= L <= ...

  3. 2018.10.30 NOIp模拟赛 T1 改造二叉树

    [题目描述] 小Y在学树论时看到了有关二叉树的介绍:在计算机科学中,二叉树是每个结点最多有两个子结点的有序树.通常子结点被称作“左孩子”和“右孩子”.二叉树被用作二叉搜索树和二叉堆.随后他又和他人讨论 ...

  4. Unity进阶----AssetBundle_03(2018/11/07)

    1. 为啥有AB包? 因为资源需要更新, 避免更新一次打包一次 动态修改. 2. AB包注意啥? 依赖关系 找依赖关系应该找到对应的平台!!! 3. 打包策略是分场景打包 若文件被文件夹包含打包出来的 ...

  5. 2018.10.30 NOIP训练 【模板】树链剖分(换根树剖)

    传送门 纯粹是为了熟悉板子. 然后发现自己手生了足足写了差不多25min而且输出的时候因为没开long longWA了三次还不知所云 代码

  6. 2018.10.30 uoj#273. 【清华集训2016】你的生命已如风中残烛(组合数学)

    传送门 组合数学妙题. 我们把这mmm个数都减去111. 然后出牌的地方就变成了−1-1−1. 然后发现求出每个位置的前缀和之后全部都是非负数. 考虑在最后加入一个−1-1−1构成一个m+1m+1m+ ...

  7. 2018.10.30 NOIP模拟 有环无向图(dijkstra+巧妙建图)

    传送门 建图巧妙啊. 对于每个点的出边,我们将它们排序之后依次连边. 这样可以把O(m2)O(m^2)O(m2)的边数变成O(m)O(m)O(m)的了. 连的权值就是max(edgemax(edgem ...

  8. 2018.10.30 NOIP模拟 字胡串(单调栈+容斥)

    传送门 对于每个点,用单调栈求出它左右第一个比他大的位置. 然后对每个点O(logai)O(log_{a_i})O(logai​​)求出第一个拥有跟它不同二进制位的位置. 然后容斥一下就行了. 代码

  9. 2018.10.30 NOIP模拟 排列树(树形dp+组合数学)

    传送门 考试的时候乱搞过了. 其实题目就是让你求拓扑排序方案数. 直接树形dpdpdp然后组合数转移一下就行了. 乱搞代码

随机推荐

  1. Maven 构建浏览器解析userAgent类

    创建Maven项目 添加pom.xml 依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&qu ...

  2. 208道面试题(JVM部分暂无答案)

    这是从网上看到的一套java面试题, 答案只是一个大概, 另外题目质量参差不齐, 斟酌参考(JVM的部分暂时没有答案) 一.Java 基础 JDK 和 JRE 有什么区别? 答: JDK(Java D ...

  3. JavaWeb - Apache与Tomcat有什么关系和区别

    总结: 1- apache是web服务器,侧重于http server: tomcat是应用(java)服务器,侧重于servlet引擎 2-合作过程详解,请看:JavaWeb - apache和to ...

  4. torch.linspace,unsqueeze()以及squeeze()函数

    1.torch.linspace(start,end,steps=100,dtype) 作用是返回一个一维的tensor(张量),其中dtype是返回的数据类型. import torch print ...

  5. Houdini SDF/Raymarching/等高曲面绘制

    1 , SDF <1> union  min(a,b) <2> intersect: max(a,b) <3> Substract  a-b  : if(b> ...

  6. iOS 中的屏幕旋转shouldAutorotate和supportedInterfaceOrientations的先后关系

    这2个UIViewController的属性,都和旋转相关, 当设备发生旋转时,首先会查看根controller的shouldAutorotate是否允许旋转,如果允许,再通过 supportedIn ...

  7. iOS URL Cache文章推荐 (待完成)

    推荐链接是:http://www.cnblogs.com/Mike-zh/archive/2016/02/24/5210169.html http://blog.csdn.net/y550918116 ...

  8. 在 VsCode 中自定义代码补全

    前言 之前公司的 Vscode 折腾成功过,如今给自己家装一个忘记怎么定义了,故回忆一下写个博文记录 代码补全顾名思义就是输入一两个字母自动提示相关的联想操作,由于VsCode非常精简所以很多联想没有 ...

  9. 在CentOs7上部署Gunicorn

    Gunicorn 的作用与优点这里就不再赘述,如不知道你也不会找这些对吧? 正文 安装简单,直接使用pip即可 pip3 install gunicorn 昨日在 Centos 中想部署Gunicor ...

  10. 【异常处理】Java异常如何做异常处理

    类似SpringMVC项目的异常处理可以这样做: 整个项目创建全局的: 1.一个自定义异常如OneException和错误码,统一封装所有异常. 2.一个返回实体类ResponseEntity,包含返 ...