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, ), this._shake_time);
}

3、NGUI中播放某个对象下的Tween动画:

TweenPosition[] tween = null;
TweenPosition tw = null; // 获取对象下全部TweenPosition组件
tween = this._show_panel.GetComponents<TweenPosition>();
for (int i = ; i < tween.Length; i++)
{
tw = tween[i]; // 选择要播放的Tween动画组
if (tw.tweenGroup == )
{
// 重置函数,不重置有可能出现第二次播放错误的情况
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要注意源组件的生命周期和协同程序的生命周期。

8、NGUI中所有panel都有一个Depth值,会影响所有它包含的widget。如果你的UI有很多窗口,那么最好每个窗口有一个panel。Panel上的depth权重会远远高于每一个widget的depth权重,所以保证panel不要使用同样的depth。如果使用同样的depth在panel上,那么draw call会被自动拆分来保证渲染顺序,所以会增加更多的draw call。

9、代码添加Tween组件动画播放完后执行某个函数:

参考链接http://unity3d.9tech.cn/news/2013/1114/38624.html

EventDelegate.Add(this._fade_in_tween.onFinished, DestoryFadeInTween);

void DestoryFadeInTween()
{
}

10、NGUI制作一个Panel时,每在Panel下添加一个子对象,如Label或者Sprite,后加的子对象Depth默认会加1,这样的话会导致当前Panel的Draw Call增加,应该是只要不互相重叠的子对象尽量用同一个Depth值。

11、Physics.RaycastAll 和Physics.Raycast 中的只选定Layermask参数,该参数表示值响应该层内的碰撞器,其它层内碰撞器忽略。Layermask的值应该等于2的n次方,这个n是layer面板上的值。

Unity笔记的更多相关文章

  1. 【Unity笔记】打包安卓APK时Build Setting中的三种Build System

    Internal(Default):Unity内置,仅需Android SDK支持.不能导出工程,适用于仅适用Unity开发的工程. Gradle(New):使用Gradle进行构建,需要Androi ...

  2. 【Unity笔记】静态碰撞体的陷阱

    概念 静态碰撞体(Static Collider):物体勾选为静态Static,有Collider组件,无Rigidbody组件. 静态碰撞体的陷阱 Unity在游戏初始化时,会把所有的静态碰撞体合并 ...

  3. 【Unity笔记】Terrain地形制作坍塌/深坑

    Unity的Terrain组件在[set the terrain height]分页下,height高度为0时,可理解为该地形的海平面高度,此时就不能地形下榻.把height调到100,点击[flat ...

  4. Unity笔记 英保通 Unity新的动画系统Mecanim

    Mecanim动画系统是Unity独一无二.强大灵活的人物动画系统.该系统赋予您的人类和非人类人物令人难以置信的自然流畅的动作,使它们栩栩如生.游戏中角色设计提高到了新的层次,在处理人类动画角色中可以 ...

  5. 【Unity笔记】Awake()和Start()的区别

    Awake在MonoBehavior创建后就立刻调用,Start将在MonoBehavior创建后在该帧Update之前,在该Monobehavior.enabled == true的情况下执行. v ...

  6. 【Unity笔记】常用插件

    记录一些常见插件,随时补充. iTween动画插件 原理:插值法,给出初始值和终点值,自动算出中间值. DoTween Tween动画 Playmaker $45 Playmaker由第三方软件商Hu ...

  7. (转)Unity笔记之编辑器(UnityEditor)

    在使用unity3d的过程中,时常会需要从场景中寻找或者调用一个对象,而Unity就提供了一个贴心的功能——拖拽.用鼠标拖一下中比写堆代码直观的多吧!但是Unity提供的远远不止这一丢丢,下面我们来简 ...

  8. Unity 笔记

    摄像机 Main Camera 跟随主角移动,不看 UI 剧情摄像机 当进入剧情时,可以关闭 main camera,启用剧情摄像机,不看 UI UI 摄像机 看 UI Unity编辑器常用的sett ...

  9. 【Unity笔记】使物体(船)漂浮在水面上——浮力

    在官方论坛看到一个关于怎么使物体漂浮在水面上的讨论:https://forum.unity3d.com/threads/floating-a-object-on-water.31671/ 水动力系统 ...

随机推荐

  1. 一个Web Project引用多个Java Project在Eclipse下的配置--转载

    项目结构: 项目由一个Web Project和多个Java Project构成,Web Project需要引用其它Java Project的类和Jar包.开发时用Eclipse3.5和Tomcat调试 ...

  2. auth tips

    https://scotch.io/tutorials/easy-node-authentication-setup-and-local https://scotch.io/tutorials/upg ...

  3. EXCEL插件

    http://www.cnblogs.com/brooks-dotnet/category/233027.html http://www.360doc.com/content/15/0713/00/1 ...

  4. Bginfo软件在域的部署和应用

    在企业的IT管理中,很多用户都不知道怎么去查看自己计算机的IP地址.登陆帐户.而对于网络管理人员来说,他们可能需要知道用户在域中登录的一些信息,如那些用户登录过,在什么时间登录,IP和MAC地址是多少 ...

  5. centos6.5 64位 openvpn安装配置

    1 查看系统版本 2 cat /etc/redhat-release 3 CentOS release 6.5 (Final) 4 5 查看内核和cpu架构 6 uname -rm 7 2.6.32- ...

  6. Python之路【第十七篇】:Django【进阶篇】

    Python之路[第十七篇]:Django[进阶篇 ]   Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...

  7. VB中右键换行

    /r/n  能在邮件中进行换行, 在VB中使用 ASCII码的 chr(10).chr(13) 就能使VB发送邮件实现换行

  8. 传统的log4j实战

    /** * */ package log4j; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator ...

  9. SQL语句之三简单增删改查

    这是前面建的库和表 USE Test go INSERT dbo.MyTable --插入数据         ( NAME ,age) VALUES  ( '数据,20  -- NAME - var ...

  10. 直接修改workspace下的配置文件与tomcat下的文件

    项目中直接修改workspace下的配置文件与tomcat下的文件,可是还有错误,例如修改了4个配置文件中的一个配置文件.经查如下: 直接修改workspace下的配置文件与tomcat下的文件,可能 ...