コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Rider】Unity においてパフォーマンスがあまり良くないコードを削除したり書き換えたりする

はじめに

f:id:baba_s:20190907210037g:plain

Rider で Unity 連携を有効化すると、
Unity においてパフォーマンスがあまり良くないコードを
削除したり書き換えたりしてくれるようになります

使用例

f:id:baba_s:20190907210045g:plain

Awake や Start、Update などは、定義しているだけで Unity から自動で呼び出されるため
これらの関数が未使用の場合は、その関数を削除するとパフォーマンスが向上します

Awake や Start、Update などが空の場合、Alt + Enter を押して
「Remove redundant Unity event function」を選択すると削除できます

f:id:baba_s:20190907210037g:plain

タグの比較は GameObject.tag を使用するよりも
CompareTag を使用した方が良いパフォーマンスになります

タグの比較に GameObject.tag を使用しているコードを選択した状態で Alt + Enter を押して
「Convert to 'CompareTag'」を選択すると、タグの比較を CompareTag に変更できます

f:id:baba_s:20190907210057g:plain

transform のプロパティを複数回参照している場合、
参照を一時変数にキャッシュした方が良いパフォーマンスになります

transform のプロパティを複数回参照しているコードを選択した状態で Alt + Enter を押して
「Introduce variable」を押すと、参照を一時変数にキャッシュするコードを生成できます

f:id:baba_s:20190907210108g:plain

Animator の SetInt や SetFloat などの関数では、
パラメータ名を文字列ではなくハッシュ値で指定した方が良いパフォーマンスになります

Animator でパラメータ名を文字列で指定しているコードを選択した状態で
Alt + Enter を押して「Use cached property index」を押すと
パラメータ名をハッシュ値で管理する定数を生成して、引数の指定を差し替えられます

f:id:baba_s:20190907210119g:plain

Material も同様です

f:id:baba_s:20190907210133g:plain

GetComponent などの関数では、型を文字列ではなくジェネリックで指定した方が
良いパフォーマンスになります

GetComponent などの関数で型を文字列で指定している場合、Alt + Enter を押して
「Convert to XXXX」を押すと、型指定をジェネリックに変更できます

f:id:baba_s:20190907210148g:plain

Instantiate をした後に親オブジェクトを設定するよりも、
Instantiate の引数で親オブジェクトを指定した方が良いパフォーマンスになります

Instantiate をした後に親オブジェクトを設定しているコードを選択した状態で
Alt + Enter を押して「Combine with object creation」を押すと、
Instantiate の引数で親オブジェクトを指定するコードに変更できます

f:id:baba_s:20190907210159g:plain

Physics.RaycastAll などの関数よりも Physics.RaycastAllNonAlloc のように
NonAlloc と付いている関数を使用したほうが良いパフォーマンスになります

Physics.RaycastAll などの関数を使用しているコードを選択した状態で
Alt + Enter を押して「Convert to 'XXXX'」を押すと、
NonAlloc と付いている関数に変更できます

f:id:baba_s:20190907210208g:plain

StartCoroutine などで使用されている関数をリネームすると、
StartCoroutine などで指定している文字列も正しくリネームされます

f:id:baba_s:20190907210219p:plain

ハイライトされているコードを選択した状態で Alt + Enter を押して
「Inspection: "XXXX" > Why is Rider suggesting this?」を選択すると
なぜコードがハイライト表示されているのか、ドキュメントで確認できます

参考サイト様