「Unity/Csharp/Invoke」の版間の差分
提供: 初心者エンジニアの簡易メモ
(ページの作成:「==Invokeとは== メソッドを遅らせて実行させることができる ==サンプル== void Main() { Invoke("Method1"); } void Method1() { } ==サン...」) |
(→繰り返し) |
||
(同じ利用者による、間の15版が非表示) | |||
行1: | 行1: | ||
==Invokeとは== | ==Invokeとは== | ||
− | + | メソッドを遅らせて(遅延)実行させることができる | |
==サンプル== | ==サンプル== | ||
void Main() { | void Main() { | ||
− | Invoke("Method1"); | + | Invoke("Method1", 0.2f); // 0.2sec後に実行 |
} | } | ||
void Method1() { | void Method1() { | ||
} | } | ||
− | == | + | ==Invokeに引数を追加== |
− | + | StartCoroutineを使えば出来る。 | |
− | + | ||
− | + | 引数として123を指定 | |
− | + | <pre> | |
− | + | using System.Collections; | |
− | + | private void Start() { | |
− | + | StartCoroutine(DelayMethod1(5.0f, 123)); | |
− | + | } | |
− | + | IEnumerator DelayMethod1(float delay, int hoge) { | |
− | + | yield return new WaitForSeconds(delay); | |
− | + | // ここに処理を追加 | |
+ | } | ||
+ | </pre> | ||
+ | |||
+ | 参考:https://kan-kikuchi.hatenablog.com/entry/DelayMethod | ||
+ | |||
+ | ==StartCoroutineが使えない場所で使いたい場合== | ||
+ | ===UniTaskを使えば出来る=== | ||
+ | <pre> | ||
+ | using Cysharp.Threading.Tasks; | ||
+ | async void Exec() | ||
+ | { | ||
+ | await DelayMethod1(5.0f, 123); | ||
+ | } | ||
+ | IEnumerator DelayMethod1(float delay, int hoge) | ||
+ | { | ||
+ | yield return new WaitForSeconds(delay); | ||
+ | // ここに処理を追加 | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | 詳しくは、[[Unity/UniTask]] [ショートカット] | ||
+ | |||
+ | ===UniRxのTimerでも=== | ||
+ | [[Unity/UniRx/遅延処理]] [ショートカット] | ||
+ | |||
+ | ==オブジェクト削除時の遅延処理== | ||
+ | GameObjectは以下で5秒後に遅延削除できる | ||
+ | Destroy(obj, 5.0f); | ||
+ | |||
+ | ==繰り返し== | ||
+ | 1秒後に実行して、その後、2秒間隔で実行 | ||
+ | InvokeRepeating("hoge", 1f, 2f); |
2022年12月6日 (火) 11:36時点における最新版
目次
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 [ショートカット]
UniRxのTimerでも
Unity/UniRx/遅延処理 [ショートカット]
オブジェクト削除時の遅延処理
GameObjectは以下で5秒後に遅延削除できる
Destroy(obj, 5.0f);
繰り返し
1秒後に実行して、その後、2秒間隔で実行
InvokeRepeating("hoge", 1f, 2f);