Riderというコードエディタがあります。
.NET IDEですが、自分は100%Unityで使っています。
半年ほど前まではVScodeを使ってたんですが、Riderに乗り換えてから日々感動しています。
少しでも多くの方にRiderの便利さを知ってもらうために、個人的なお勧め便利機能をご紹介します。
自分はMacで使っているので、Windowsの方は適宜読み替えてください。
(option → alt、command→ctrl など)
自動保存機能
Riderは「command + S」しなくても自動で保存してくれます。
(いまだに癖で「command + S」してしまいますが)
保存し忘れがなくなるだけでも便利なんですが、それ以上に良いと思ったのは他クラスに跨がるリファクタリングをした時に、勝手に保存してくれること。
例えばある変数をリネームした時に、その変数を使っている他クラスの変数もリネームされます。
その場合に他クラスを保存しに行かなくても良いのが楽です。
ファイルの削除/移動時に自動でエディタからも消してくれる
VScodeから乗り換えて良かったところのひとつが、Unityエディタの方でC#ファイルの削除やフォルダ移動をした際にコードエディタからも自動で消してくれること。
VScodeだと「ファイル名(deleted)」という名前になってそのまま表示され続けるんですよね。(設定変更できたらごめんなさい)
(deleted)になっている状態に気づかずに編集/保存してしまうと、Unityエディタでは複製が新規作成されてしまいます。(同じファイルが2つ存在することになる)
その点Riderでは、ファイルの削除や移動があるとRiderからも消してくれるので、削除済みファイルを編集/保存してしまうミスがなくなります。
必要なusingを自動で記述してくれる
最強の推しポイント。これだけでもRiderを使う価値あり。
他のコードエディタを使っていると、usingし忘れでエラーになったり、usingする名前空間を忘れてしまうことが多々あります。
Riderでは、先にusingを記述しなくても、必要な名前空間を勝手に記述してくれます。
例えばImageコンポーネントを使う時は、普通なら先に以下を記述する必要があります。
using UnityEngine.UI;
しかしRiderであれば、Imageコンポーネントを使う際に「UnityEngine.UIの名前空間にあるImageだよね?」と聞いてくれます。
ここでreturnを押すと、自動でusingを書いてくれるのです。
UnityEngine.UIぐらいなら全然覚えてられるのですが、System.EventsとSystem.EventSystemsどっちだっけ?とか、導入したアセットの名前空間なんだっけ?という状況、経験したことないでしょうか。
名前空間を気にせず、コード書くことだけに集中できます。
魔法の言葉「option + return」
Riderで一番使うショートカットおそらく「option + return」なはず。
変数名、クラス名、名前空間名、修飾子など様々なところで「option + return」することで、その要素に対する機能を表示できます。
例えば変数名のところで「option + return」すると「private修飾子をつけるのがお勧めですよ!」と言ってくれたりだとか
修飾子のところで「option + return」すると、他の修飾子に変換できたりだとか
特に、Riderが波線で注意してくれたところに対して「option + return」することで、改善例を教えてくれるのが最高。
例えばプロパティを以下のように記述すると、returnのところに緑の波線が付きます。
「option + return」してみると「To expressoin-bodied property」というのが提案されるので、returnキーを押すと以下のような記述になります。
こんな風に簡潔に書けるよ!と言ってくれました。
もちろん気に入らなければcommand + zで戻せますし、設定で無視するようにもできます。
困ったら「option + return」!
typoを指摘してくれる
typoと思われる名前には、緑の波線が表示されます。
ただ、例えば「Collidable」のようなプログラムで使いがちだけど英語としては間違っている、みたいな単語も指摘されます。
これは意図的に使っているから指摘しないでほしい、という単語は
「option + return」から「Add to user dictionary」を選択し、許容する範囲を選べば指摘されなくなります。
「This computer」にしておけば、他のプロジェクトにも反映されます。
リネームが簡単&強力
変数名やクラス名などのリネーム(名前変更)が簡単&強力です。
対象の部分にカーソルを持っていき、ショートカット「command + R + R」でリネームできます。
もちろん他のクラスにあるものも自動でリネームしてくれますし、特に強力なのがコメントアウトしている部分もチェックひとつでリネームできる点。
名前空間の自動指定
名前空間をUnityエディタ内のフォルダ階層に合わせて自動で指定してくれます。
新しくC#ファイルを作って開いた時に、クラス名の部分に黄色い波線が表示されるのですが、そこで「option + return」してください。
すると、Unityのフォルダ階層に沿った名前空間を提案してくれるので、returnキーを押すと名前空間をつけてくれます。
提案される名前空間名は設定で変更することができ、冒頭に会社名などを入れることもできます。
for ←→ foreachの変換
forとforeachを簡単に変換できます。
for文で書いたけどforeachで良くない?って時や、逆に添字使いたいからforに変換したい、って時にかなり便利な機能。
例えば以下のようなとき。
iの値を特に使ってないので、foreachに変換できます。(この場合、そもそもforに緑の波線を表示してくれてますね)
forのところで「option + return」すると「Convert to foreach」という項目があるので、returnキーを押すと以下のように自動で変換してくれます。
foreachからforに変換することも同様。
波線がなくてもforeachの部分で「option + return」すればできます。
必要なメソッドを自動挿入してくれる
インターフェースや抽象クラスによって実装を強制されているメソッドを自動で挿入してくれます。
例えばIPointerClickHandlerインターフェースを指定したクラスの場合、何もメソッドを書かないとエラーになります。
赤線のところで「option + return」して「Implement missing members」することで、必要なメソッドを実装してくれます。
アタッチされているGameObjectが分かる
作成したC#クラスのコンポーネントを何かのGameObjectにアタッチしていると、そのクラス名の上にUnityロゴと「○ asset usage」というのが表示されます。
クリックすることで、アタッチされているGameObject名と、それが含まれるシーン名が表示されます。
他にもメソッドに付けられた「○ asset usage」は、Buttonのアクションなどに指定された部分を検索することができます。
インスペクタで入力された値が表示される
public変数や[SerializeField]がついた変数にインスペクタから値が入力されている時、Rider側でその値が表示されます。
例えば上の画像の「TestObject」の部分をクリックすると、Unityエディタのその場所にジャンプすることもできます。
SerializeField変数の値を保持しつつ名前変更できる
[SerializeField]がついた変数の名前をリネームする際、インスペクタで指定していた値が削除されてしまいます。
しかしRiderでは、[SerializeField]の変数をリネームしようとすると以下のダイアログが出ます。
チェックをつけておくと、以下のようにリネームされます。
これ実はRiderに言われるまで知らなかったんですが、
[FormerlySerializedAs(“変更前の変数名”)] をつけることで、インスペクタの値を保持したままリネームできます。
Riderは自動で付けてくれます。(もちろんチェックを外せば普通にリネームされます)
より良い記述を提案してくれる
コード的に間違っているわけではないんだけど、「こうした方がパフォーマンス的に良い」「こうした方が安全」みたいな部分を指摘してくれます。
Riderの指摘によって初めて知ることも結構あったり。
赤線や波線が表示されている時は、その場所にカーソルを持って行って「option + return」をしてみてください。
例えば以下のような改善が提案されます。
Update()内でのGetComponentは控える
複数回使うtransformは変数に入れる
タグの比較はCompareTagを使用する
ほかにもたくさん
この他にも、Nullチェック、早期リターン、修飾子の修正など、いろいろ改善点を提案してくれます。
Riderに従うだけで綺麗にコードが書けるのでは?と思ってしまうほど。
赤線や波線を引かれたら、とりあえず一度「option + return」してみましょう。
LengthとCountの自動変換
C#では要素数を取得する際、配列の場合はLength、Listの場合はCountを使います。
ただ、たまにどっちがどっちだっけ?とか、この変数配列とListどっちだっけ?みたいなことないでしょうか。
Riderはどっちを書いても、正しい方に勝手に変えてくれます。
例えばListに対してLengthを書こうとすると、勝手にCountに変換されます。
Unityのイベント関数が補完される
RiderはUnityを強力にサポートしているので、Unityのイベント関数名(Awake、Update、OnDisableなど)を補完してくれます。
例えば「aw」と書くだけでAwake関数が提案され、
returnキーを押すと勝手に記述されます。
ちなみにUnityのイベント関数は、Unityのロゴと「Event function」というのが表示されます。
Unity内の文字列を候補に表示する
Scene名、Layer名、Tag名などのUnity上で作成されている文字列を自動で候補に表示してくれます。
例えばLoadScene()メソッドを使う際には、そのプロジェクトに存在するScene名を表示してくれます。
色が表示される
Color型の値には、対応する色の下線が表示されます。
数値だけでは色をしっかり想像しにくいので、なかなか便利。
スニペットが用意されている
デフォルトでコードスニペットが用意されており、数文字書くだけでよく使うコードを自動挿入できます。
例えば「sfield」と入力すると以下のコードが挿入されます。(実際は「sf」だけで候補に出てきます)
他にも、「log」でログ出力が挿入できたり
「ear」で空配列(empty array)が挿入できたり
「req」でRequireComponentが挿入できたりします。
カスタムのスニペットを作れる
スニペットは自分で自由に作成することもできます。
Riderの Preferences > Editor > Live Templates > C#(またはUnity)にスニペット一覧があり、右上のボタンから新規作成できます。
自分は例えば「sbj」でUniRxでよく使うコードを挿入するようにしたり
「seq」でDOTweenのSequenceを挿入したりできるようにしています。
その他のよく使うショートカット
どのコードエディタでも大体ある機能ですが、もちろんRiderにもあるよ、ということで書いておきます。
- ファイル内検索: command + F
- 全ファイル検索: command + shift + F
- ファイル名検索: shift 2回
- リネーム: command + R 2回
- 実装にジャンプ: command + クリック
- 行ごと移動: option + shift + 上下キー
- 左右のタブ移動: command + shift + [ or ]
- 前回編集した箇所にジャンプ: command + shift + delete
さいごに
これでもまだ便利機能の一部です。
自分もまだまだ知らない機能が大量にあると思うのですが、現時点でも確実におすすめ。
Unityを使っている方、是非Riderを使いましょう!
無料体験期間や学生無料プランもあるので、まずは試してみることをお勧めします!
コメント