1、使某个对象上的脚本失效和生效:
GameObject.Find("xxx").transform.GetComponent<xxx>().enabled = false; //失效 GameObject.Find("xxx").transform.GetComponent<xxx>().enabled = true; //失效
2、NGUI相机震动效果:
public float _shake_time = 0.5f; public void CameraShake() { iTween.ShakePosition(GameObject.Find("UI Root/Camera").camera.gameObject, new Vector3(0.05f, 0.05f, 0), this._shake_time); }
3、NGUI中播放某个对象下的Tween动画:
TweenPosition[] tween = null; TweenPosition tw = null; // 获取对象下全部TweenPosition组件 tween = this._show_panel.GetComponents<TweenPosition>(); for (int i = 0; i < tween.Length; i++) { tw = tween[i]; // 选择要播放的Tween动画组 if (tw.tweenGroup == 1) { // 重置函数,不重置有可能出现第二次播放错误的情况 tw.ResetToBeginning(); tw.Play(); } }
4、获取某个父对象中的组件:
gameObject.transform.GetComponentInParent<InfoPanelManager>()
5、获取某个子对象组件:
gameObject.transform.GetComponentInChildren<PanelFade>()
6、Scroll View中按钮中的按钮点击失效:
问题描述:
用NGUI制作Scroll View时,Scroll View中的每一项为一个按钮,每一项还有多个按钮用于弹出不同的界面,初始时子按钮的Depth比父按钮的Depth高。这是把该界面作为预设用于在场景中点击某个对象时动态添加,会出现只能响应父按钮的点击事件,而子按钮的点击事件全部被屏蔽掉了。
解决方案:
将子按钮的Box Collider组件的size项的Z值设为比父按钮的大,NGUI按钮默认Z为0,即调为0.1即可。
注:
修改Box Collider组件的size项的Z值时,应该不勾选UISprite组件的Collider auto-adjust to match才能使修改生效
7、延迟等待执行代码方法:
这里用StartCoroutine开启协同程序的方法来实现。
StartCoroutine(WaitForShow(time)); IEnumerator WaitForShow(float time) { yield return new WaitForSeconds(time); }
值得注意的是如果这段程序需要运行一段较长时间,在运行期间,如果开启这段协同程序的组件被删除了,则这段程序就不在执行了,因此使用StartCoroutine要注意源组件的生命周期和协同程序的生命周期。
原文:http://www.cnblogs.com/vitah/p/4030087.html