はじめに
ReSharper で Unity 連携を有効化すると、
Unity においてパフォーマンスがあまり良くないコードを
削除したり書き換えたりしてくれるようになります
Unity 連携の有効化
Unity 連携の有効化の方法は上記の記事で記載しております
使用例
Awake や Start、Update などは、定義しているだけで Unity から自動で呼び出されるため
これらの関数が未使用の場合は、その関数を削除するとパフォーマンスが向上します
Awake や Start、Update などが空の場合、Ctrl + . を押して
「Remove redundant Unity event function」を選択すると削除できます
タグの比較は GameObject.tag を使用するよりも
CompareTag を使用した方が良いパフォーマンスになります
タグの比較に GameObject.tag を使用しているコードを選択した状態で Ctrl + . を押して
「Convert to 'CompareTag'」を選択すると、タグの比較を CompareTag に変更できます
transform のプロパティを複数回参照している場合、
参照を一時変数にキャッシュした方が良いパフォーマンスになります
transform のプロパティを複数回参照しているコードを選択した状態で Ctrl + . を押して
「Introduce variable」を押すと、参照を一時変数にキャッシュするコードを生成できます
Animator の SetInt や SetFloat などの関数では、
パラメータ名を文字列ではなくハッシュ値で指定した方が良いパフォーマンスになります
Animator でパラメータ名を文字列で指定しているコードを選択した状態で
Ctrl + . を押して「Use missing argument name 'XXXX'」を押すと
パラメータ名をハッシュ値で管理する定数を生成して、引数の指定を差し替えられます
Material も同様です
GetComponent などの関数では、型を文字列ではなくジェネリックで指定した方が
良いパフォーマンスになります
GetComponent などの関数で型を文字列で指定している場合、Ctrl + . を押して
「Convert to XXXX」を押すと、型指定をジェネリックに変更できます
Instantiate をした後に親オブジェクトを設定するよりも、
Instantiate の引数で親オブジェクトを指定した方が良いパフォーマンスになります
Instantiate をした後に親オブジェクトを設定しているコードを選択した状態で
Ctrl + . を押して「Combine with object creation」を押すと、
Instantiate の引数で親オブジェクトを指定するコードに変更できます
Physics.RaycastAll などの関数よりも Physics.RaycastAllNonAlloc のように
NonAlloc と付いている関数を使用したほうが良いパフォーマンスになります
Physics.RaycastAll などの関数を使用しているコードを選択した状態で
Ctrl + . を押して「Convert to 'XXXX'」を押すと、 NonAlloc と付いている関数に変更できます
StartCoroutine などで使用されている関数をリネームすると、
StartCoroutine などで指定している文字列も正しくリネームされます
ハイライトされているコードを選択した状態で Ctrl + . を押して
「Inspection: "XXXX" > Why is ReSharper Ultimate suggesting this?」を選択すると
なぜコードがハイライト表示されているのか、ドキュメントで確認できます