Unit --面试常问题一

1、游戏对象消失三种方法的区别?(active、destroy、enabled)
gameObject.renderer.enabled=false;---这个是对象不再屏幕上渲染,但是它
还是实实在在存在的,只是相当于隐身,而物体本身的碰撞还是存在的

Destroy(gameObject);----这个是将对象直接摧毁,实际上该对象的内存并没有释放,

一般会在下个场景加载后才真正释放

gameObject.SetActive(false);---这个是停用该物体,在Find找该物体时  你是找不到的。


2、动态加载资源 的方式? 区别?
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对象还在内存中,所有
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值