前提・実現したいこと
Unityで数msおきに処理を実行したいです
試したこと
現在、Time.fixedDeltaTime
に実行間隔を直接設定して
FixedUpdate()
から該当の処理を行っています。
以下、実際のプログラムではないですがそれに近いサンプルです。
csharp
1public class MyClass : MonoBehaviour { 2 bool flag = false; 3 4 void Start() { 5 float fc = 150.0f; // Hz 6 7 if (Time.timeScale != 0.0f) { 8 // ここでFixedUpdateの更新間隔を設定する 9 Time.fixedDeltaTime = Time.timeScale / (fc * 2.0f); 10 } 11 } 12 13 void FixedUpdate() { 14 if (flag) { 15 // flagがtrueのときの処理 16 } else { 17 // flagがfalseのときの処理 18 } 19 20 flag = ~flag; 21 } 22}
これで一応動いてはいます。
しかし、物理エンジンでもFixedUpdate()
を使っていると聞いたので、
今後物理演算を使用するときにこの方法だと重くなってしまうと思い別の解決策を探しています。
調べたこと
非同期の辺りなどを調べていたのですが具体的に利用する方法が浮かびませんでした。
Coroutineは更新間隔がフレーム基準になってしまうので諦めました。
Taskは何故か処理がfor文内に入らず原因がわからなかったのでこれも諦めました。
調べている限りフレーム単位でなく指定したごく短い間隔ごとに処理を行うというのは
結構厳しそうな印象ですがもしご存知の方がいらっしゃいましたらよろしくおねがいします!
補足情報(FW/ツールのバージョンなど)
Unityのバージョンはは2018.4.0f1のPersonalです。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/04 10:00
2019/07/04 10:03