1、游戏对象消失三种方法的区别?(active、destroy、enabled)
gameObject.renderer.enabled=false;---这个是对象不再屏幕上渲染,但是它
还是实实在在存在的,只是相当于隐身,而物体本身的碰撞还是存在的
Resource.Load()---这个要求资源必须放到
Resource文件夹下,只能加载本地文件
Resource.LoadAll();
AssetBundle---它和www一起使用,可以实现从服务器上下载资源并动态加载
3、AssetBundle
AssetBundle的管理共分为三个部分:1)--AssetBundle文件 2)--AssetBundle内存镜像 3)--AssetBundle内存对象实例
*****举一个例子说明AssetBundle如何进行内存释放? Destroy ----AssetBundle.UnLoadUnusedAssets();
例如:GameObject go=Instantiate(AssetBundle.Load("MyPrefab"))as GameObject; 这个prefab比如是个npc。
1)当你不需要它的时候,你使用Destroy(go);你以为释放干净了,其实只是释放了Clone对象
通过AssetBundle.Load加载的所有引用、非引用的assets对象全部都静躺在内存里。这是使用AssetBundle1.UnLoad(true);
2)如果这个资源需要反复的读取,不方便UnLodad。可以使用Destroy以后,Resource.UnLoadUnusedAssets();
把所有与这个NPC相关的asset数据都销毁
3)当然如果这个NPC需要频繁的创建和销毁,就让那些Assets呆在内存中加速游戏体验
*****当第一次实例化 一个预制物体时,会出现卡一下?
这是因为第一次实例化之后相应的asset对象还没有创建,要加载系统内置的assetBundle并创建Assets,第一次以后,
虽然Destroy了,但是prefab的assets对象还在内存中,所有
gameObject.renderer.enabled=false;---这个是对象不再屏幕上渲染,但是它
还是实实在在存在的,只是相当于隐身,而物体本身的碰撞还是存在的
Destroy(gameObject);----这个是将对象直接摧毁,实际上该对象的内存并没有释放,
一般会在下个场景加载后才真正释放gameObject.SetActive(false);---这个是停用该物体,在Find找该物体时 你是找不到的。
Resource.Load()---这个要求资源必须放到
Resource文件夹下,只能加载本地文件
Resource.LoadAll();
AssetBundle---它和www一起使用,可以实现从服务器上下载资源并动态加载
3、AssetBundle
AssetBundle的管理共分为三个部分:1)--AssetBundle文件 2)--AssetBundle内存镜像 3)--AssetBundle内存对象实例
*****举一个例子说明AssetBundle如何进行内存释放? Destroy ----AssetBundle.UnLoadUnusedAssets();
例如:GameObject go=Instantiate(AssetBundle.Load("MyPrefab"))as GameObject; 这个prefab比如是个npc。
1)当你不需要它的时候,你使用Destroy(go);你以为释放干净了,其实只是释放了Clone对象
通过AssetBundle.Load加载的所有引用、非引用的assets对象全部都静躺在内存里。这是使用AssetBundle1.UnLoad(true);
2)如果这个资源需要反复的读取,不方便UnLodad。可以使用Destroy以后,Resource.UnLoadUnusedAssets();
把所有与这个NPC相关的asset数据都销毁
3)当然如果这个NPC需要频繁的创建和销毁,就让那些Assets呆在内存中加速游戏体验
*****当第一次实例化 一个预制物体时,会出现卡一下?
这是因为第一次实例化之后相应的asset对象还没有创建,要加载系统内置的assetBundle并创建Assets,第一次以后,
虽然Destroy了,但是prefab的assets对象还在内存中,所有