機能説明
Event System
ユーザーの入力を監視しイベントを伝える役割を果たします。
Event Trigger
Inspector上からアタッチできるコンポーネントです。Event Systemの様々なイベントを受け取る受信機の役割を果たします。Hierarchy上から手動でイベントをアタッチする他にスクリプト上からEvent Triggerを参照し実装することもできます。
IxxxxHandler
クリックやドラッグなど様々なインターフェイスが存在します。スクリプトから実装することで動作します。この場合Event Triggerは必要ありません。
Event Systemのイベントを受け取る為の条件
[送信側]
・Hierarchy上にEvent Systemがある。
・uGUI以外で使いたい場合はPhysics Raycasterをカメラにアタッチする。2Dと3Dがあるので注意
[受信側]
・uGUIの場合、Raycast TargetがオンになったuGUIオブジェクト(Image、Textなど)
・uGUI以外の場合、Clliderがアタッチされている。
Event Trigger、IxxxxHandlerの選び方
スクリプトで書きたい派の方はIxxxxHandlerを。Inspector上から手動でアタッチしたい派の方はEvent Triggerをアタッチし該当スクリプトをアタッチすると良いと思います。それ以外に、ひとつのオブジェクトに対してイベントを動的に切り替えたい時などはEvent Triggerをアタッチし、スクリプトで切り替えるといいと思います。
IxxxxHandlerをuGUIのImageに対して実装するサンプル
Imageをドラッグする最小コードです。下記のコードをAssets以下に保存してuGUIのImageにアタッチすることで動作します。
C#
1using UnityEngine;
2using UnityEngine.UI;
3using UnityEngine.EventSystems;
4
5[RequireComponent(typeof(Image))]
6public class DraggableImg : MonoBehaviour, IDragHandler
7{
8 RectTransform Tr;
9
10 void Awake()
11 {
12 Tr = GetComponent<RectTransform>();
13 }
14
15 public void OnDrag(PointerEventData eventData)
16 {
17 Move(eventData.position);
18 }
19
20 void Move(Vector3 pos)
21 {
22 Tr.position = pos;
23 }
24}
知っておくと便利なこと
Event SystemのDrag Threshold
どのタイミングからドラッグがスタートするかを決めることができます。ドラッグに対しての感度みたいなものです。数値が低いほど感度が高くなります。例えば、1つのボタンがクリックできる克つ移動できるとします。感度が高いほどドラッグとして見なされやすくなるので、ユーザーが少しもドラッグせずクリックしなければクリックイベントが発火しないなどの設定ができます。
オブジェクトの重なり順
Event Systemは重なり順を考慮してくれます。例えばuGUIのButtonより前にImageがある場合、Buttonにイベントが伝達されず反応しなくなります。これをうまく利用するとユーザーの動作をコントロールしやすくなります。
動くuGUI要素は結構な負荷に
Event Systemとは関係ないですが、uGUIのすべての要素は画面に対して相対的に配置されます。Imageなどを動かす場合すべての要素が再計算されるので結構な負荷になります。対策としてはCanvasをもう一つ用意しそこで動かす方法や、動くものはuGUIを使わないという選択肢もあります。内容にもよりますが重くて動きが悪い場合はご検討ください。
Unity上で使う座標の扱いを覚える
uGUIを扱う上で座標の種類を知っておくと便利です。
【Unity】【uGUI】Screenの座標とWorld(3D)座標の変換について
http://tsubakit1.hateblo.jp/entry/2016/03/01/020510
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/03/16 07:33
2019/03/16 09:40
退会済みユーザー
2019/03/16 13:08
2019/03/16 14:03
2019/03/16 14:29 編集
退会済みユーザー
2019/03/16 15:01
2019/03/16 18:13 編集
退会済みユーザー
2019/03/17 02:42
2019/03/17 06:29
退会済みユーザー
2019/03/17 07:23