概要
var list = activeThings.FindAll( c => !c.IsEnable ); list.ForEach( c => Destroy( c.gameObject ) ); activeThings.RemoveAll( c => !c.IsEnable );
無効になったオブジェクトを Destroy して
リストから削除する処理を LateUpdate 関数に記述したところ、
毎フレーム 72B の GC Alloc が発生して
ときどきゲームがカクつく状態になった
下記ように for や if を使用するベタ書きに変更したところ
GC Alloc は 0B になってゲームがカクつかなくなった
for ( int i = 0; i < activeThings.Count; i++ ) { var thing = activeThings[ i ]; if ( thing.IsEnable ) continue; activeThings.RemoveAt( i ); Destroy( thing.gameObject ); i--; }