Unity の Transform の読み書きは遅い

カテゴリ:unity

Unity のバージョンは 5.4.

Pentium G3220 のマシンで 10,000 個のオブジェクトの transform.position を更新するだけの処理(transform.position = newPos の実行)に約 14 ms かかっている. 60fps の上限が 16ms なので,Unity で 10,000 個の動くオブジェクトを出すのはほぼ不可能だ.

stats
1フレームの更新にかかった時間の統計

続きを読む

Unity で Instantiate・Destroy を抑制する

カテゴリ:unity

銃弾やモブなどの使い捨てのオブジェクトはプレハブにしておき, 必要に応じて Instantiate() するのが簡単だ. そして不要になったら Destroy() で破棄する.

しかしこの方法は無駄が多い. Instantiate(),Destroy() するたびに ガーベジコレクション(以下 GC)が動作する恐れがある. さらに生成・破棄が頻繁に起こると GC1回あたりの動作が長くなる.

続きを読む

Unity の foreach におけるメモリについて

カテゴリ:unity

うにばな メモリ使用量の最適化・ヒープメモリ ほか では『foreach は enumerator オブジェクトを生成する』とあるが,これは List<> のような Generics を使った場合の話である. 単純な配列の列挙ならば foreach はヒープにメモリを確保しない. これは foreach を含むコードをコンパイルして,プロジェクトフォルダ/Library/ScriptAssemblies/Assembly-CSharp.dll を IL DASM で見てみればわかる.

続きを読む

Windows10 で管理者としてサインインする

カテゴリ:PC

コンピュータの管理に『ローカルユーザーとグループ』が表示されないことがある. そのときは管理者権限でコマンドプロンプトまたは PowerShell を起動し,以下のコマンドを実行する.

net user administrator password /active:yes

続きを読む

Unity のアニメーションクリップを Legacy にする

カテゴリ:unity

Unity のバージョンは 5.4.

Unity5系のアニメーションはアニメーションさせるのにアニメーションコントローラが必要になる. ただ再生するだけでいい単純なアニメーションにコントローラーは不要だ.

アニメーションクリップを Legacy にする

続きを読む