facebook twitter hatena line email

「Unity/Csharp/Invoke」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(StartCoroutineが使えない場所で使いたい場合)
(StartCoroutineが使えない場所で使いたい場合)
行41: 行41:
 
</pre>
 
</pre>
  
詳しくは、[[Unity/UniRx/UniTask]] [ショートカット]
+
詳しくは、[[Unity/UniTask]] [ショートカット]
  
 
==オブジェクト削除時の遅延処理==
 
==オブジェクト削除時の遅延処理==
 
GameObjectは以下で5秒後に遅延削除できる
 
GameObjectは以下で5秒後に遅延削除できる
 
  Destroy(obj, 5.0f);
 
  Destroy(obj, 5.0f);

2021年10月19日 (火) 00:24時点における版

Invokeとは

メソッドを遅らせて(遅延)実行させることができる

サンプル

void Main() {
    Invoke("Method1", 0.2f); // 0.2sec後に実行
}
void Method1() {
}

Invokeに引数を追加

StartCoroutineを使えば出来る。

引数として123を指定

using System.Collections;
private void Start() {
  StartCoroutine(DelayMethod1(5.0f, 123));
}
IEnumerator DelayMethod1(float delay, int hoge) {
  yield return new WaitForSeconds(delay);
  // ここに処理を追加
}

参考:https://kan-kikuchi.hatenablog.com/entry/DelayMethod

StartCoroutineが使えない場所で使いたい場合

UniTaskを使えば出来る。

using Cysharp.Threading.Tasks;
async void Exec()
{
    await DelayMethod1(5.0f, 123);
}
IEnumerator DelayMethod1(float delay, int hoge)
{
    yield return new WaitForSeconds(delay);
    // ここに処理を追加
}

詳しくは、Unity/UniTask [ショートカット]

オブジェクト削除時の遅延処理

GameObjectは以下で5秒後に遅延削除できる

Destroy(obj, 5.0f);