36897


(一般的なコードではありませんが，Unityの処理については一般的な問題だと思うので質問させていただきます。[マルチポスト](https://teratail.com/questions/86436)です)

## 前提

Unityで以下の取り組みをしています。簡単に言えば，人がAIを構築して対戦するゲームで，人ではなく自動生成でAIを構築して対戦させようとする取り組みです。  
<https://github.com/Tsunehiko511/project-puppeteer>

・ファイルの説明設定  
Setting.csでプレイヤーのデータを設定して，GameMaster.csのPlay関数で対戦させています。

・問題  
Game.Play関数を実行する中で，ある関数の処理をInvoke("ある関数",
0)に変えた場合と変えない場合でUnityの処理時間に違いがありました。Invokeを使えばスムーズに処理されInvokeを使わなければ，ややフリーズしてからコンソールに結果が表示されます。（リンク先のプロジェクトファイルをインポートすれば同様の環境が構築できます）

## 実現したいこと

Game.Play関数を高速に処理したいです。そのためにInvoke関数を排除したいのですが，排除するとUnityの処理がややフリーズしてしまいます。これらの原因と解決方法を教えてください。

### 補足情報

以下のリンクによれば，Invoke関数で0秒を指定した時は，呼び出された場所の最後に実行されているのかなと思っています。  
<http://www.urablog.xyz/entry/2016/08/27/103229>  
このことから，Unity上で関数の処理を行う時に何らかの時間的制約があるのではないかと思っています。


CC BY-SA 3.0
2017-07-31T08:22:31.320
36814
2017-08-03T08:11:59.617
2020-06-17T08:14:45.997
-1
8100
question
c# unity3d
Unity：処理時間に依存してフリーズするのかどうか？


こちらで解決してもらいました。Invokeを使わない方が速かったです。

<https://teratail.com/questions/86436>


CC BY-SA 3.0
2017-08-03T08:11:59.617
36897
2017-08-03T08:11:59.617
8100
36814
answer