NGUI:UICamera

概論:

UICamera是個命名的不太好的元件。事實上,這個名字只是為了維持向下相容的目的。

UICamera腳本實際上負責的是送出NGUI事件給所有在攝影機中可見並到達的物件。並不須要在UI中做任何事情。事實上,如果你想要讓你的遊戲中的物件接收到NGUI事件,像是OnPress, OnClick, OnDrag等等,你要做的事情是把UICamera腳本附加到你的主攝影機上。

你可以有數個UICamera腳本在場景中。大部分的遊戲都會有一個在繪出widgets的攝影機中,而其他的則是在繪出整個遊戲的攝影機中。

  

UICamera的第一個選項,事件類型(Event Type),是用來決定在滑鼠或是接觸(touch)事件下腳本的順序。假如它被設定成UI模式,它會以widget的深度(depth)為基準--就跟繪圖的順序是一樣的。假如你的UICamera是被附加到主攝影機上,你應該要將這個選項改成World 模式。這樣做會依據點擊物件到攝影機的距離來排序。

事件遮罩(Event Mask)是用來決定哪個遊戲物件層能夠接收事件,在大部分的例子中,你可以不用去改變原本的設定值”Everything”,因為這個值是與UnityEngine.Camera的Culling Mask參數連結。如果你想要的話,你可以調整它。假如你曾經改變過包含UI階層的遊戲物件的層(Layer ),要確定調整Event Mask,不然的話你會突然發現你的UI不能再回應事件了。

除錯(Debug )選項可以用來除錯目前在滑鼠下面的某個元件。假如你不能確認哪個東西在攔截滑鼠事件,你可以在一些按鈕上按下滑鼠,只要開啟這個選項,你就能夠在右上角上看到它。

允許多點觸碰(Allow Multi-Touch)選項控制是否支援多點觸控功能。假如關閉的話,多點觸碰會被當成只有單點的觸碰。

沾黏壓觸(Sticky Press )選項控制當使用者在按鈕上壓下滑鼠並且滑過它時的通知行為。當此選項關閉時,滑鼠滑出一個碰撞器,然後進入另外一個,此時將會壓下第二個碰撞器。這個功能已經被排定在未來的更新中重新設計。

(維克:關閉這個選項後,當你壓著滑鼠左鍵進入某個按鈕時,該按鈕就算是被按下。)

沾黏工具提示(Sticky Tooltip)選項調整tooltip的行為。假如關閉此選項,一旦滑鼠再次移動就會隱藏工具提示。若是開啟此選項,當滑鼠依然在相同物件上時,工具提示都會一直存在。

工具提示延遲選項(Tooltip Delay)控制滑鼠在某個物件上方停止移動與送出OnTooltip 訊息通知到該物件上之間的延遲時間,此數值是以秒為計算單位。

投射範圍(Raycast Range) 控制投射的長度,在大部分的情況下,可以安全地忽略著個值。這個值是以世界單位作為計算,所以假如你的攝影機有0.3的近距離裁切以及1000的遠距離裁切,你發現某些的遠距離物件並不會回應點擊事件,將這個值設定到像是2000之類的數值(某個大於你的攝影機的遠距離與近距離裁切平面的差距的數值)。

事件來源(Event Sources)區塊控制哪種事件類型會被處理,假如選項中的其中一個被關閉,那些事件將部會在被處理。某些平台會暗地裡強制關閉特定的事件。譬如說對遊戲機來說,會自動關閉滑鼠以及接觸事件。

Thresholds區塊讓你能夠藉由修改點擊、拖曳、tap事件的臨界值(thresholds),來調整滑鼠與觸碰事件的行為,這個值是以畫素為單位。

 (維克:我其實完全不了解這段在講啥,舊版的說明文件中,mouse click thresholds指的是:在OnClick()失效前,控制滑鼠在OnPress(true)事件後能到達多遠,不知道一不一樣??。不過我還是不太了解,待研究…)

軸與鍵盤(Axes and Keys )區塊讓你能夠選擇哪個軸影響哪個移動,這些軸必須要符合你的專案中的Input Manager設定的名字。

新手提示:

UICamera 會送出下面事件到碰撞器中:

  • OnHover (isOver) 當滑鼠懸浮或是滑過一個碰撞器上時,會送出此事件。
  • OnPress (isDown) 當滑鼠按鈕在碰撞器上被壓下時會送出此事件。
  • OnSelect (selected) 當滑鼠在同一個物件上壓下又放掉時會送出此事件。
  • OnClick () 與OnSelect同樣條件下,此事件會被送出,但新增一個檢查滑鼠是否沒有移動太多。UICamera.currentTouchID可以告訴你哪個按鈕被按下。
  • OnDoubleClick () 在四分之一秒內點擊兩次時,此事件會被送出。UICamera.currentTouchID會告樹你哪個按鈕被按下。
  • OnDrag (delta) 當滑鼠或是點擊在碰撞器上壓下並且拖曳時,此事件會被送出。
  • OnDrop (gameObject) 拖曳物件被放掉時,此事件會被送出。
  • OnInput (text) 打字時,此事件會被送出。(在點擊選擇碰撞氣後)。
  • OnTooltip (show) 當滑鼠懸浮在一個碰撞器上一段時間沒有移動時,此事件會被送出。
  • OnScroll (float delta) 當滑鼠滾動移動時,此事件會被送出。
  • OnKey (KeyCode key) 當鍵盤或是控制器輸入使用時,此事件會被送出。

要在你自己的客製化腳本中使用這些,只需要簡單的建立有合適函式的腳本就可以,就像這樣:

void OnPress (bool isPressed)

{

  if (isPressed) Debug.Log("I was pressed on!");

  else Debug.Log("I was unpressed");

}

類別文件:

http://tasharen.com/ngui/docs/class_u_i_camera.html

本頁面是翻譯官方網頁的文件:UICamera

 
 

  按個讚!~支持本站!~

FB推薦載入中