「Unity/Csharp/Delegate」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→delegateのサンプル) |
|||
行41: | 行41: | ||
呼び出し元 | 呼び出し元 | ||
− | NewBehaviourScript.cs | + | *NewBehaviourScript.cs |
<pre> | <pre> | ||
public class NewBehaviourScript : MonoBehaviour { | public class NewBehaviourScript : MonoBehaviour { |
2018年11月15日 (木) 00:53時点における版
delegateとは
独自イベントを生成できるもの。httpのレスポンスなど少し待たないとレスポンスが戻ってこないところで使う。
delegateのサンプル
"やっほー"をリクエストすると1/2の確率で"やっほー"を返してくれるサンプル
- Mountain.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Mountain : MonoBehaviour { private string msg; public enum ResponseType { Success, Faild, NetworkError } public delegate void CustomCallback(ResponseType responseType); private CustomCallback callbacks; public void addCallback(CustomCallback callback) { callbacks += callback; } public void Exec(string msg) { // 1/2の確率で成功 if (Random.Range(-10.0f, 10.0f) > 0) { this.msg = msg; callbacks(ResponseType.Success); } else { this.msg = ""; callbacks(ResponseType.Faild); } } public string GetMessage() { return msg; } }
呼び出し元
- NewBehaviourScript.cs
public class NewBehaviourScript : MonoBehaviour { Mountain mountain; // 送信 void Start () { GameObject gameObj = new GameObject(); mountain = gameObj.AddComponent<Mountain>(); mountain.addCallback(OnResponse); mountain.Exec("やっほー"); } // 受信 public void OnResponse(Mountain.ResponseType responseType) { Debug.Log("onResponse=" + responseType); if (mountain) { if (responseType.Equals(mountain.ResponseType.Success)) { Debug.Log("msg=" + mountain.GetMessage()); } else if (responseType.Equals(mountain.ResponseType.Faild)) { Debug.Log("msg=" + mountain.GetMessage()); } } } }
httpでdelegateを使った例
unity/Csharp/Request [ショートカット]