标签:
学习NGUI一直断断续续的,目前打算做一个总结的笔记。
我使用的是比较老的3.6.0版本。
1.使用NGUI,需要开启“Edit”->“Project Settings”->“Physics”里的“Raycasts Hit Tiggers”选项,否则无法使用交互系统,当前该选项是默认开启的。
2.NGUI控件要添加 Box Collider 组件才可以接受交互事件;
3.如果要让按钮上的文本也可以根据按钮的状态改变颜色,可以再在按钮上添加另一个Button组件,然后把组件的Target设置为文本即可;
4.如果需要使用到更多的交互事件,比如移入移出等,可以添加UIEventTrigger脚本;
5.手动使用代码添加UIEventTrigger的事件的示例:
1 using UnityEngine; 2 using System.Collections; 3 4 public class AddEvent : MonoBehaviour 5 { 6 private GameObject button; 7 8 //传递的参数 9 public float num = 123.456f; 10 11 void Start () 12 { 13 button = GameObject.Find("UI Root/Sprite"); 14 15 //获取组件 16 UIEventTrigger et = button.GetComponent<UIEventTrigger>(); 17 18 //直接传入方法进行回调 19 EventDelegate ed1 = new EventDelegate(OnButtonHoverOver1); 20 et.onHoverOver.Add(ed1); 21 22 //如果方法带有参数必须使用字符串的形式进行设置 23 EventDelegate ed2 = new EventDelegate(this, "OnButtonHoverOver2"); 24 ed2.parameters[0] = new EventDelegate.Parameter(this, "num"); 25 et.onHoverOver.Add(ed2); 26 } 27 28 private void OnButtonHoverOver1() 29 { 30 Debug.Log("OnButtonHoverOver1"); 31 } 32 33 private void OnButtonHoverOver2(float p) 34 { 35 Debug.Log("OnButtonHoverOver2 p:" + p.ToString()); 36 } 37 }
其它的事件如Button的onClick等方法都是一致的。
6.如果控件无法接收到事件,需要注意一下控件的Depth的设置,高的Depth会阻断到低的Depth。对于这种情况可以开启NGUI的Debug模式,这样可以查看到接收鼠标事件的对象。
7.ScrollView的使用记录:
8.将ScrollView中的组件拖出的实现:
标签:
原文地址:http://www.cnblogs.com/hammerc/p/4481597.html