NGUI中如何獲取當前點擊的物體

NGUI中如何獲取當前點擊的物體  

2013-05-14 17:19:46|  分類: Unity|舉報|字號 訂閱函數

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);  }