Unityの新しいUIシステムであるUGUIについて勉強をしてみました。 今回は「スクリプト」についてです。 バージョンはUnity5.01を利用しています。
準備 - ネームスペース
UIを利用する場合にはネームスペースの記述が必要です。 [c] using UnityEngine.UI; [/c]
この記述をすれば、UI系のコンポーネントを利用することができます。
イベント系
同じようにイベント系のコンポーネントを利用する場合には必要に応じて以下の記述が必要になります。 [c] using UnityEngine.Events; //UnityEventを利用する場合 using UnityEngine.EventSystems; //EventSystemsを利用する場合。 [/c]
UGUI - スクリプト
Canvas内の前後関係を変更する
スクリプトからCanvas内のオブジェクトの表示順番を変更します。
- SetsiblingIndex() : 指定した順番に表示する
[c]
_rectTransform.SetSiblingIndex(0);
[/c]
スクリプトの拡張
インターフェース名をスクリプトに追加した場合、イベントをスクリプト内で処理ができます。 一部インターフェイス名。
- IBeginDragHandler : ドラッグをした時
- IDragHandler : ドラッグ中
- IEndDragHandler : ドラッグを終了した時
[c] public class Hogehoge : MonoBehaviour ,IBeginDragHandler,IDragHandler,IEndDragHandler{
//IBeginDragHandlerを追加した場合
public void OnBeginDrag(PointerEventData data){
}
//IDragHandlerを追加した場合
public void OnDrag(PointerEventData data){
}
//IEndDragHandlerを追加した場合
public void OnEndDrag(PointerEventData data){
}
}
[/c]
UnityEventの継承
ボタンなどのOnClickのようなイベントを自作で作ることができます。 Imageをボタンのように扱うことができます。 【ButtonコンポーネントのOnClick】
【自作したモノ】
[c]
public class MyPressEvent : UnityEvent
public MyPressEvent imaegeExitPress;
public MyPressEvent imaegeEndPress;
public MyPressEvent imaegePress;
void Hoge(){
//セットしてあるスクリプトを呼び出す場合はInvoke()を利用する imageExitPress.Invoke(this);
}
}
[/c]
スクリプトからイベントを登録する
Inspector上で指定をしなくても、スクリプト上からイベントを登録ができます。 [c] using UnityEngine; using UnityEngine.UI;
void Start () {
//ネームスペース(UnityEngine.UI)があるのに、わざわざ書かないとエラーがでました)
UnityEngine.UI.Button button = gameObject.GetComponent<UnityEngine.UI.Button>();
button.onClick.AddListener(OnButtonClick);
}
[/c]
[RequireComponent(typeof(Animator))]
必要なメソッドを記載します。 例ではAnimatorコンポーネントが必要となります。 [c] [RequireComponent(typeof(Animator))] [/c]
[System.Serializable]
Inspector上で変数などを指定することができます。
UnityゲームUI実践ガイド 開発者が知っておきたいGUI構築の新スタンダード 池和田有輔,時村良平 エムディエヌコーポレーション 売り上げランキング : 7352 Amazonで詳しく見る |