【UnityC#】Invokeを使い倒してみた
UnityにInvokeというおもしろそうな関数がありました。
.netのControl.Invokeとは別物です。
HyahhaSpawner.cs
using UnityEngine; public class HyahhaSpawner : MonoBehaviour { //============================================================= [SerializeField] private GameObject Hyahha; private Vector3 defaultPos = new Vector3(-0.5f,-1.4f,-9.3f); private int hyahhaNum = 30; private float spawnInterval = 0.5f; //============================================================= private void Start () { for(int i = 0;i < hyahhaNum;i++) { Invoke("SpawnHyahha",i*spawnInterval); } } /// <summary> /// ヒャッハーを生成する /// </summary> private void SpawnHyahha () { GameObject obj = Instantiate(Hyahha,defaultPos + new Vector3(Random.value,0,Random.value),Quaternion.identity); obj.transform.eulerAngles = new Vector3(0,180,0); } }
Start()内でInvokeを0.5秒おきに呼び出します。
引数とか渡せないのでInvoke使いたい!ってなるとちょっと工夫が必要かもしれないです。
Invokeの亜種でInvokeRepeatingという関数もあります。
InvokeRepeating(関数の名前,実行するタイミング,実行する間隔);
private void Start () { InvokeRepeating("SpawnHyahha",0,spawnInterval); }