Object.Destroy慎用
Object.Destory
Destory(Object)并没有立刻,马上,及时的删除这个Object。
举例
在使用NGUI的Table或Grid进行布局时,就需要注意了:尽量不要使用Destroy 来销毁GameObject,而是使用gameObject.SetActive(false);

建议方法
建议使用setactive(false)替代destory
int max = parent.childCount;
//全部都隐藏
for (int i = 0; i < max; i++)
{
parent.GetChild(i).gameObject.SetActive(false);
}
int idx = 0;
//根据需要显示,并设置值
foreach (CWeaponVo weaponVo in weapons)
{
UILabel atkLabel;
var nature = weaponVo.Info.Nature.ToLower(); if (!propertyLabels.TryGetValue(nature, out atkLabel))
{
newObj = parent.GetChild(idx).gameObject;
newObj.SetActive(true);
sprite = newObj.GetComponent<UISprite>();
sprite.spriteName = iconWpProperty[nature];
atkLabel = GetControl<UILabel>("TotalLabel", newObj.transform);
propertyLabels[nature] = atkLabel;
}
idx++;
}
慎用Destory
//每次Refresh时都销毁之前的
void Refresh()
{
foreach (var obj in PropertyObjList)
{
Destroy(obj);
}
PropertyObjList.Clear();
}
void RenderUI()
{
foreach (CWeaponVo weaponVo in weapons)
{
UILabel atkLabel;
var nature = weaponVo.Info.Nature.ToLower(); //生成新的
if (!propertyLabels.TryGetValue(nature, out atkLabel))
{
newObj = Instantiate(properTemplate) as GameObject;
CBase.Assert(newObj);
newObj.SetActive(true);
CTool.SetChild(newObj, parent.gameObject);
sprite = newObj.GetComponent<UISprite>();
sprite.spriteName = iconWpProperty[nature];
atkLabel = GetControl<UILabel>("TotalLabel", newObj.transform);
propertyLabels[nature] = atkLabel;
PropertyObjList.Add(newObj);
}
}
//重设Table位置
properTable.Reposition();
}
意外后果
使用Destory(obj),在重设Table的位置时,因为Destory不及时 所以残留着之前的child
Instance GameObject
Instance NGUI widget
在Instance 绑有ngui组件的prefab时,建议把gameobject.setActive(false)之后再instance。不然很容易引起多生成一个UICamera。
NGUI版本:3.6.x
生成多的UICamera?
因为ngui的panel在渲染时,会检查组件是否在UICamera下,instance生成的临时对像没有ParentRoot,很容易引起bug。
文档资料
文档:http://game.ceeger.com/Script/Object/Object.Destroy.html
Object.Destroy慎用的更多相关文章
- Tips9: Destroy( )函数中的 延迟摧毁 功能
你知道Object.Destroy()函数吗?在脚本中用来摧毁一个游戏物体或组件,可是你知道他能在执行后延迟一段时间后才摧毁物体吗,其实很简单: using UnityEngine; public c ...
- Object Pascal中文手册 经典教程
Object Pascal 参考手册 (Ver 0.1)ezdelphi@hotmail.com OverviewOverview(概述)Using object pascal(使用 object p ...
- Unity Destroy和DestroyImmediate
Destroy(Object obj, float t = 0.0F); 删除一个游戏对象,组件或者资源. 物体obj现在被销毁或在指定了t时间过后销毁.如果obj是组件,它将从GameObject销 ...
- Unity基础知识学习笔记二
1,object Instantiate(object original,Vector3 position,Quaternion rotation) 克隆原始物体,并返回克隆物体. ...
- JQuery Easy Ui DataGrid
Extend from $.fn.panel.defaults. Override defaults with $.fn.datagrid.defaults. The datagrid display ...
- Execution Order of Event Functions
In Unity scripting, there are a number of event functions that get executed in a predetermined order ...
- Unity3D核心类型一览
Unity3D核心类型一览 本文记录了Unity3D的最基本的核心类型.包括Object.GameObject.Component.Transform.Behaviour.Renderer.Colli ...
- TextBox 英文文档
TextBox Extend from $.fn.validatebox.defaults. Override defaults with $.fn.textbox.defaults. The Tex ...
- unity3D技术之事件函数的执行顺序[转]
unity3D技术之事件函数的执行顺序 转自http://www.yxkfw.com/?p=13703 在unity的脚本,有大量的脚本执行按照预先确定的顺序执行的事件函数.此执行顺序说明如下: ...
随机推荐
- IOS开发札记
//遍历所有的子控件,并打印其Frame +(NSString )searchAllSubviews:(UIView )superview { NSMutableString xml = [NSMut ...
- yii redies 不同的工程缓存key的问题
参考这篇文章 基本配置操作: yii main.php中: return array( ... 'components'=>array( 'redis_cache' => array ( ...
- RecyclerView的下拉刷新和加载更多 动画
下拉刷新和加载更多 1.https://github.com/jianghejie/XRecyclerView 2.http://blog.csdn.net/jabony/article/detail ...
- 移动Web开发(二)
这些天一直在忙iOS,Android和.Net方面的知识都有些忘记了,汗.不过还是先重温一下HTML吧,手动滑稽. 说实话前面的基础部分基本上大家都会,就当看个热闹吧. 1.HTML的核心要素--标签 ...
- iOS KVO概述
iOS KVO概述 面试中经常会被问到:什么是KVO?这个问题既然出现概率这么大,那么我们就来详细讲一讲到底什么是KVO.下次再有面试官问你的时候,你就可以娓娓道来,以彰显高逼格 概述 问:什么是KV ...
- eclipse编码格式设置
大家好,我是小Alan,很高兴大家能够看到这篇小小的技术点文章,这还是从参加工作以来,小Alan写的第一篇博文.喜欢能够给一些朋友带来方便. 说到eclipse编码格式的设置其实一个非常非常小的事情, ...
- json官方学习档案
项目经常用json开发,但说实话,对json了解的一直不深入.今天看了下json的官方资料,明了很多. json官方网址:http://www.json.org/json-zh.html JSON(J ...
- 你知道哪些linux命令,能把文件上传到远程linux服务器
多数情况下 企业的服务基本都是部署在linux服务器 那对于测试同学,必须掌握基本的linux命令 至少要知道怎么部署整体环境 部署过程中,经常需要的操作,是向服务器上传部署包 你一般都是 ...
- Git从零开始怎么学?
最近,公司项目代码版本库管理,全部从svn 迁移到Git 最近了解了一段时间 近期会把整个Git使用过程陆续分享 如何从零开始使用Git
- SQL Server 内存相关博文
Don’t confuse error 823 and error 832 本文大意: 错误832: A page that should have been const ...