NGUI的UICamera中定義了一個內部類MouseOrTouch表示當前的輸入設備:鼠標,Touch,或是遊戲杆。ui
//begin源代碼//spa
public class MouseOrTouch
{
public Vector2 pos; // Current position of the mouse or touch event
public Vector2 delta; // Delta since last update
public Vector2 totalDelta; // Delta since the event started being trackedorm
public Camera pressedCam; // Camera that the OnPress(true) was fired withblog
public GameObject current; // The current game object under the touch or mouse
public GameObject pressed; // The last game object to receive OnPress遊戲
public float clickTime = 0f; // The last time a click event was sent out事件
public ClickNotification clickNotification = ClickNotification.Always;
public bool touchBegan = true;
public bool pressStarted = false;
public bool dragStarted = false;
}ip
//end源代碼//get
在MouseOrTouch中定義了當前點擊的物體:currentit
當咱們點擊某個物體時,只須要調用UICamera.currentTouch.current便可獲取具體點擊的是哪一個物體。
這個方法是爲了在不一樣的按鈕使用同一點擊事件時很是有效。
例如:在滾動列表子項中的全部按鈕的響應事件都爲OnUpgradeBtnClick。在OnUpgradeBtnClick中調用 UICamera.currentTouch.current便可獲取我點擊的具體按鈕。從而知道他的數據:UIData uiData = curObject.transform.parent.GetComponent<UIData>();
for (int i = 0; i < list.Count; i++) {
SerEquip equip = list [i];
GameObject upgradeItem = NGUITools.AddChild (upGradeTable.gameObject, PrefabMgr.Instance ().GetPrefab ("GUI/Main/Equipment/Item/UpgradeItem"));
UIData uiData = upgradeItem.AddComponent<UIData> ();
uiData.Data = equip;
//UpgradePanel下的upgrade按鈕的響應函數//
GameTools.EventClick (upgradeItem, "upGradeBtn", wndObject, "OnUpgradeBtnClick");
}
//升級面板 下upgrade按鈕響應函數// public void OnUpgradeBtnClick() { GameObject curObject = UICamera.currentTouch.current; UIData uiData = curObject.transform.parent.GetComponent<UIData>(); WndMgr.Instance().ToggleWnd((int)UIType.Equip); UpgradeWnd upgradeWnd = (UpgradeWnd)WndMgr.Instance().ShowWnd((int)UIType.Upgrade); upgradeWnd.SetEquip((SerEquip)uiData.Data); }