試しにdelegateを使ってみたサンプル。
シーンにEmpty(GameObject)を2つ追加して、それぞれをSceneとTouchSensorに名前を変更。
SceneにはScene.cs、TouchSensorにはTouchSensor.csスクリプトを追加。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using UnityEngine; using System.Collections; public class TouchSensor : MonoBehaviour { public delegate void funcDelegate(); public funcDelegate func = null; void Update() { if(Input.touchCount > 0) { if(func != null) { func(); } } } } |
6行目 : 返り値なし、引数なしのdelegate、funcDelegate型を定義。
7行目 : 定義したfuncDelegate型の変数funcを定義。
13-16行目 : funcが設定されていれば、func()を呼び出す。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using UnityEngine; using System.Collections; public class Scene : MonoBehaviour { private TouchSensor touchSensor; void Start() { touchSensor = GameObject.Find("TouchSensor").GetComponent<TouchSensor>(); touchSensor.func = func; } public void func() { print("*** called func() ***"); } } |
10行目 : TouchSensor(コンポーネント)を取得。
11行目 : 関数(func)を設定する。
14-17行目 : 呼び出されるfunc()を定義。
コメントを残す
コメントを投稿するにはログインしてください。