コガネブログ

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

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

はじめに

f:id:baba_s:20190511162253g:plain

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

Unity 連携の有効化

Unity 連携の有効化の方法は上記の記事で記載しております

使用例

f:id:baba_s:20190511162246g:plain

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

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

f:id:baba_s:20190511162253g:plain

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

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

f:id:baba_s:20190511162258g:plain

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

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

f:id:baba_s:20190511162302g:plain

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

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

f:id:baba_s:20190511162326g:plain

Material も同様です

f:id:baba_s:20190511162331g:plain

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

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

f:id:baba_s:20190511162342g:plain

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

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

f:id:baba_s:20190511162349g:plain

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

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

f:id:baba_s:20190511162335g:plain

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

f:id:baba_s:20190511162249p:plain

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

参考サイト様

関連記事