##1. 非同期処理とは。
このボタンが押されたら、とか。
敵が3体倒されたら、とか。
一般論でいうと、この人から電話がきたら、とか。
自分のタイミングではなく、外部からのトリガーで処理を実行したい際に「非同期処理」を使います。
##2. 送り手と受け手がいる.
受け手: 条件満たしたのね.連絡ありがと! 次の処理流そっと.
##3. callbackは System.Action型
C#では、System.Action型の Callback という関数が用意されています.
以下では、「スペースキーが3回押されたら」という条件をトリガーに、次の処理を流すという設定でコードを紹介します。
###送り手側
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CountSpace : MonoBehaviour {
System.Action Callback;
int spacenum = 0;
// Update is called once per frame
void Update()
{ //スペースキーを押すとspacenumをカウントアップする.
if (Input.GetKeyDown(KeyCode.Space)){
this.spacenum++;
}
//スペースキーが3回押されたら
if (spacenum == 3) {
this.Callback(); //送信機を使用して連絡をする.
}
}
//送信機の設置
public void SetCallback(System.Action Callback)
{
this.Callback = Callback; //
}
###受け手側
public CountSpace A; //CountSpaceという classの Aという変数
// Use this for initialization
void Start ()
{ //電話が来たらカッコ内の処理を流す.
A.SetCallback(連絡を受け取ってから流したい処理);
}
ここでは仮に変数名をAとしましたが,なんでも構いません.
イメージ的にはAさんからかかってきたらということですが,そのAさんが誰であるか限定する必要がないためです。