ユニティEventSystem(オリジナルではありません)

ユニティEventSystem

  • メッセージシステム
  • 入力モジュール
  • サポートされているイベント
  • Raycasters

1.メッセージシステム(改善されたメッセージング・システム)

基本的には以前のSendMessageのアップグレード版として見ることができます。

使い方(公式サイトをコピー):

STEP1。IEventSystemHandlerから継承されたインターフェイスを宣言
public interface ICustomMessageTarget : IEventSystemHandler { // functions that can be called via the messaging system void Message1(); void Message2(); } 
STEP2。このインタフェースを実装し、スクリプトがオブジェクトに掛け、オブジェクトはAAA想定しています
public class CustomMessageTarget : MonoBehaviour, ICustomMessageTarget
{
    public void Message1() { Debug.Log ("Message 1 received"); } public void Message2() { Debug.Log ("Message 2 received"); } } 
STEP3。任意に使用されるスクリプトExecuteEvents静的クラスは、インターフェイスで定義された方法を実行するために、メッセージを送信し
//target should be AAA
ExecuteEvents.Execute<ICustomMessageTarget>(target, null, (x,y)=>x.Message1()); 

 :上のオブジェクトがある場合STEP3レーンExcuteジェネリックメソッド、三つのパラメータがあり、最初のパラメータは、ゲームオブジェクトのオブジェクトが送信されたメッセージであり、唯一のIEventSystemHandler実装クラス缶の時間は、この場合、自然オブジェクトがAAAです。
また、ノート  :ExecuteEvents静的クラス他の方法があります。

## Static Functions

EventSystems.ExecuteEvents.CanHandleEvent Can the given GameObject handle the IEventSystemHandler of type T. EventSystems.ExecuteEvents.Execute Execute the event of type T : IEventSystemHandler on GameObject. EventSystems.ExecuteEvents.ExecuteHierarchy Recurse up the hierarchy calling Execute<T> until there is a GameObject that can handle the event. EventSystems.ExecuteEvents.GetEventHandler Traverse the object hierarchy starting at root, and return the GameObject which implements the event handler of type <T> EventSystems.ExecuteEvents.ValidateEventData Attempt to convert the data to type T. If conversion fails an ArgumentException is thrown. 

名前は比較的簡単通訳、翻訳ではないです。そのようなものとしてEventSystems.ExecuteEvents.ExecuteHierarchy、それは、適切なゲームオブジェクト、および実行する方法を見つけるために、再帰的です。

以前の多くよりも正直、科学のSendMessageであるためには、以前までしか検索し、階層内のダウン、そして今の目的のために探しています。
しかし....私の意見は、より多くの、のSendMessage私は、実際のプロジェクトで使用したことがないものは何もありません、この推定値は使用しません。なぜ?これを使用System.Actionと...

2.入力モジュール

戦略のこの部分は、約団結あなたは、それを扱うキーボードなど、すべての入力方法をサポートしている、それに触れるというように、balabala ...

3.サポートされているイベント(サポート入力イベント)

この部分はより重要である、団結イベントシステムは、入力イベントの以下の17種類をサポートしています

イベントインターフェース 意味
IPointerEnterHandler ポインタが入り、
IPointerExitHandler 休暇へのポインタ
IPointerDownHandler ポインタを押します
IPointerUpHandler ポインタ解除
IPointerClickHandler ポインタプレスとリフト
IInitializePotentialDragHandler ドラッグ可能なオブジェクトが見つかりましたし、いくつかの変数を初期化するために使用されます
IBeginDragHandler スタートドラッグ
IDragHandler でドラッグ
IEndDragHandler 最後をドラッグ(とき)
IDropHandler ドラッグ終了位置(場所)
IScrollHandler マウスホイール
IUpdateSelectedHandler あなたがオブジェクトを選択すると、送信し続けます
ISelectHandler 選択したオブジェクトになり
IDeselectHandler オブジェクトが選択解除になり
IMoveHandler 物体の動き(上下、等)
ISubmitHandler 提出(提出)ボタンが押されました
ICancelHandler キャンセル(キャンセル)ボタンが押されました

:ここでの「ポインタは、」すべてのユニティ・マウス、タッチとサポートの他のタイプとすることができます

我々は最終的にはPCとモバイルエンドのコードのセットを共有できることを意味

4. Raycasters(光線がありました)

入力モードに応じて、統一の種類を決定します。これはまた別の重要なポイントです。

レイタイプ 意味
グラフィックRaycaster UIの使い方
物理学2D Raycaster そのような他のBoxCollider2Dとして使用される2Dオブジェクトコンポーネント、
物理学Raycaster 図3Dは、(UI実際に使用することができる)を使用してオブジェクト

5.練習 - 練習とテスト

レッツ・ビルド簡単なシナリオ:

  1. シーンの名前空間オブジェクトを追加するには  EventSystem、追加EventSystemのコンポーネントを、コンポーネントクリックAdd Default Input Modulesボタンを
  2. シーンカメラでは、追加Physics Raycasterのコンポーネントを
  3. Cudeの3Dシーンを構築し、2Dの画像
  4. Cude画像へ次のスクリプトやドラッグ:
using UnityEngine;
using UnityEngine.EventSystems;

public class SupportedEventsTest : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerDownHandler, IPointerUpHandler, IPointerClickHandler, IInitializePotentialDragHandler, IBeginDragHandler, IDragHandler, IEndDragHandler, IDropHandler, IScrollHandler, IUpdateSelectedHandler, ISelectHandler, IDeselectHandler, IMoveHandler, ISubmitHandler, ICancelHandler { public void OnBeginDrag(PointerEventData eventData) { Debug.Log("OnBeginDrag"); } public void OnCancel(BaseEventData eventData) { Debug.Log("OnCancel"); } public void OnDeselect(BaseEventData eventData) { Debug.Log("OnDeselect"); } public void OnDrag(PointerEventData eventData) { Debug.Log("OnDrag"); } public void OnDrop(PointerEventData eventData) { Debug.Log("OnDrop"); } public void OnEndDrag(PointerEventData eventData) { Debug.Log("OnEndDrag"); } public void OnInitializePotentialDrag(PointerEventData eventData) { Debug.Log("OnInitializePotentialDrag"); } public void OnMove(AxisEventData eventData) { Debug.Log("OnMove"); } public void OnPointerClick(PointerEventData eventData) { Debug.Log("OnPointerClick"); } public void OnPointerDown(PointerEventData eventData) { Debug.Log("OnPointerDown"); } public void OnPointerEnter(PointerEventData eventData) { Debug.Log("OnPointerEnter"); } public void OnPointerExit(PointerEventData eventData) { Debug.Log("OnPointerExit"); } public void OnPointerUp(PointerEventData eventData) { Debug.Log("OnPointerUp"); } public void OnScroll(PointerEventData eventData) { Debug.Log("OnScroll"); } public void OnSelect(BaseEventData eventData) { Debug.Log("OnSelect"); } public void OnSubmit(BaseEventData eventData) { Debug.Log("OnSubmit"); } public void OnUpdateSelected(BaseEventData eventData) { Debug.Log("OnUpdateSelected"); } } 

ゲームを実行し、私たちが見ることができる、3Dと2Dオブジェクトは、我々は追加のカメラによるもので、適切なイベントシステム、あるPhysics Raycasterコンポーネントを。あなたが交換した場合Graphic Raycasterのキューブが応答していないこと。

おすすめ

転載: www.cnblogs.com/-831/p/11810128.html