Closed tsyu12345 closed 3 months ago
他の避難者が動いてから、順番に移動するような挙動をみせた。
もしかしたら、パス検索の処理がシングルプロセス的に動いていて、1人1人順番に行われている??
どうもシングルプロセス的に動いているぽい。
https://discussions.unity.com/t/please-improve-the-navmesh-multithreading-layers-and-more/923845
pathPending
の値を見てみたら、falseになった時に動き始めたので、おそらくパス検索の処理がコールスタックにたまっている気がする。
とれる対応としては2点ありそう
暫定対応として、すべての避難者のパス検索が終わるまで待機する方法を採用
あるいは、道に迷っている人・避難所や高台がどこか分からない人、ということにするか?
要相談
石井さんから提供頂いた!!
https://docs.unity3d.com/ScriptReference/AI.NavMesh.html
pathfindingIterationsPerFrame
The maximum number of nodes processed for each frame during the asynchronous pathfinding process.
1フレームあたりで計算できる量が決まっているらしいので、これを上げてみる
5000とかにしてみたところ、大きく改善。
実際避難者の数を1000人とかにすると、もう少し上げる必要があるかもだが一旦これで決め打ちとする。
// Master-Simulator\Assets\Scripts\EnvManager.cs
using UnityEngine.AI;
NavMesh.pathfindingIterationsPerFrame = 5000;
https://github.com/user-attachments/assets/5c3bfebc-feab-44cf-8971-b3ad68252709
なにかに引っかかっている感じ???