自動勉強会01-UnityのGC周り
開催までの概要
開催日時
2022年4月15日(金) 19:30~20:30 (延長して21:00終了)
参加資格
ご自由にどうぞ
実施方式
参加方法
開催まで
開催時
自分のロールに「イベント参加者」がついていることを確認し、ついていなければつけてください
地域おこしXR研究会Discordサーバにはじめて入られた方は、(人力)ロール付与に少し待ち時間があるので、開始までのんびりしてください
「勉強会」カテゴリの「画面共有用」チャンネルに入室してください
聞き専の人はマイクをミュートにしても大丈夫です
聞き専の方も、本ページを編集することで、リアルタイムにやり取りを行うことは可能です
参加者
yusuke.iconocti.icon
内容
気になるトピック
Unity標準のObjectPool(2021.1より)
開催前でも自由に追記してください
会話ログ
当日、書きながら雑談をしてくれると、手間が少なくて運営がうれしいです
ObjectPool
yusuke.icon--- 補足 ---
Unity(C#)で配列やClassを作って破棄してを繰り返すと(特にUnityのUpdate関数内)、GC.Collectがすごい頻度で呼ばれて、フレーム落ちすることがあります。(特にモバイル端末)
その対策として、Class内で配列を使いまわしたり、オブジェクトプールを使ったりして、メモリ確保と解放の頻度を減らします。
なお、モバイル端末で何も考えずにアプリケーションを作ると、CPUより先にGPUが足りなくなると思うので、Unity始めて間もないころは気にしなくてもいいと思います。
Unity標準オブジェクトプールの解説記事(非公式)
もともと自作するしかなかったけど、公式で実装された
yusuke.icon個人的にはCollectionPoolが便利そう(よく使う形)
Unity標準のObjectPool
CollectionPool
DictinaryPool、ListPool
Get, Release
SharpLab
メモリレイアウトとか確認するのに便利
Span<T>
.net 2.1(Unity 2021.3)から使える
Collectionの特定の範囲の参照を取得できる(No Allocation)
yusuke.icon Byte列の特定の範囲がほしい時とかにわざわざ配列を作らなくても良い
--- ここからRustの話し(ポインタとかメモリ回りの話しから派生) ---
Rust for Windows
Win32 apiのRust用ライブラリ
Yew
WASMを使ったGUIを作成するライブラリ
WGPU
BEVY