「Unity/Csharp/Action」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→Actionサンプル3引数で渡して戻す) |
(→Actionサンプル1) |
||
行9: | 行9: | ||
Debug.Log("msg1:" + msg); | Debug.Log("msg1:" + msg); | ||
}; | }; | ||
+ | |||
+ | // 呼び出し | ||
+ | OnMsg("hello"); | ||
+ | </pre> | ||
+ | |||
+ | ===以下と同じ=== | ||
+ | <pre> | ||
+ | System.Action<string> OnMsg = (msg) => | ||
+ | { | ||
+ | Debug.Log("msg1:" + msg); | ||
+ | }; | ||
+ | |||
+ | // 呼び出し | ||
OnMsg("hello"); | OnMsg("hello"); | ||
</pre> | </pre> |
2024年11月13日 (水) 10:10時点における版
Actionとは
関数を変数にできるもの
Actionサンプル1
System.Action<string> OnMsg = delegate (string msg) { }; OnMsg += (msg) => { Debug.Log("msg1:" + msg); }; // 呼び出し OnMsg("hello");
以下と同じ
System.Action<string> OnMsg = (msg) => { Debug.Log("msg1:" + msg); }; // 呼び出し OnMsg("hello");
Actionサンプル2(別クラス呼び出し)
public class ActionScene : MonoBehaviour { void Start() { var eventActionClass = new EventActionClass(); eventActionClass.Setup( callOnAction: () => { Debug.Log("callOnAction"); }, callOffAction: () => { Debug.Log("callOffAction"); }); } } public class EventActionClass { public void Setup(System.Action callOnAction, System.Action callOffAction) { callOnAction(); callOffAction(); } }
Actionサンプル3引数で渡して戻す
public class ActionScene : MonoBehaviour { void Start() { System.Action<string> event = (name) => { Debug.Log(name); // hogeが返ってくる }; var sampleLogic new SampleLogic(); sampleLogic.Load(event); } } public class SampleLogic { public void Load(System.Action<string> event) { event("hoge"); } }