読者です 読者をやめる 読者になる 読者になる

vaguely

和歌山に戻りました。ふらふらと色々なものに手を出す毎日。

RiderでUnityアプリ開発するときに詰まったとことか - JetBrains Advent Calendar 2016

Rider C# Unity Event

はじめに

この記事はJetBrains Advent Calendar 2016の11日目の記事です。

まだEarlyAccessProgramの段階ではあるものの、C#用のIDEであるRiderが一般ユーザーでも使用可能になりました。

早速UnityのScriptを書くのに使ってみたところ、いくつか引っかかったところがあったので書き残しておきます。

※この記事は2016.12.11時点のもの、かつRiderは正式版ではないため、今後の改修で不要になるかもしれません。

Monoのインストール

Windowsの場合だと(おそらく).Net Frameworkが使われるため必要ないかもですが、Macの場合はMonoをインストールする必要があるようです。
(最初開いた瞬間にエラーまみれでクラクラきた思い出...)

http://www.mono-project.com/

MonoはUnityで使うMono Developにも含まれていると思いますので、そちらを使うのも良さそうです。 が、Unityを複数バージョンインストールする場合などはややこしいので、特に理由がなければ別途インストールしてあげる方が良いかと。

プラグインのインストール

Unity用のプラグインが作成されています。

https://github.com/JetBrains/Unity3dRider

使い方はUnityプロジェクトのAssets\Plugins\Editor\JetBrainsに設置するだけ。

これが無いとどうなるか、というと、最初にMono Developなどで生成したソリューションファイルを開いたときは問題なくても、 Unity側で何かを変更した場合などにエラーまみれになったりします。

次のソリューションファイル生成と合わせて、面倒ではあるもののRiderを使うのであれば現状プラグインのインストールは必須と言えそうです。

ソリューションファイルの生成

Mono Develop、Visual Studioを使う場合、Unityエディタ上でスクリプトファイルをダブルクリックするとソリューションファイル(.sln)などが存在しなければ自動で生成した上でそのプロジェクトを開きます。

Riderの場合はその方法だと生成されず、ソリューションが見つからないとエラーになります。

ではどうするか。

上記のUnity用プラグインをインストールすると、メニューのAssets以下に「Open C# Project in Rider」という項目が追加されるので、これをクリックすることでソリューションファイルなどを生成できます。

ソリューションファイルさえ生成しておけば、あとはスクリプトファイルのダブルクリックでもプロジェクトを開くことができるようになります。

Unity Support Plugin

定着しているからなのか、誰も気にしていないからなのかは分かりませんが、Unity用のプラグインはもう一つあります(Resharper用に作成されたもののようです)。

Windowsの場合はFile/Settings/Pluginsの「Install JetBrains plugin」からUnityで検索すると以下が見つかると思います。

https://resharper-plugins.jetbrains.com/packages/JetBrains.Unity/

このプラグインをインストールすると、StartやUpdateといった、Unity標準のイベント関数に対して、 どこからも呼ばれてないよとWarningがでることが防げます。

Sharderの編集

Sharderも編集自体は可能です。

が、カラースキーマは(デフォルトでは)用意されていないようなので、メモ帳などで開いた場合と変わらない感じです。

自作してみようかと思ったのですが方法がわからず…。
ここは今後解決できたら投稿したいと思います。

命名規則

デフォルトの命名規則

命名規則については、Unityエディタからクラスを作った場合は特に以下のような点でWarningが出ます。

namespace: (ファイルがAssets/Scriptsにある場合) namespace Assets.Scripts を指定する。

namespace Assets.Scripts
{
    public class MainCtrl : MonoBehaviour
    {
    }
}

public変数: Pascal方式で書く

public string PublicText;

private変数: _(アンダースコア)始まりのCamelCase

private string _privateText;

enum: Pascal方式で書く

private enum TestEnum{
    Num0 = 0
    , Num1
    , Num2
}

命名規則の変更

namespaceはともかく、変数の命名規則は何がベースになっているのかが少し気になりました。
(特にprefixとしてアンダースコアを付けるprivate変数)

Microsoft命名規則だとprefixは禁止されていますね。

ということでprivate変数を、prefix無しのCamelCaseに変更してみます。

  1. まずprefix無しのprivate変数を用意して、左に出てくる電球をクリックします。

  2. Inspection: "Inconsistent Naming" -> Change naming rule 'Instance fields (private)' をクリックします。

  3. Rule Settingsウインドウが開きます(しばらく待っても表示されない場合は、ウインドウ切り替えて開いてないか確認してみてください)。

  4. 「Name Prefix」の「_」を削除して「Save」ボタンをクリックします。

その他

スクリプトファイルの追加

ここまでの設定が完了していたら、Unityから追加してもRiderから追加しても問題なく反映されると思います。

ただMonoBehaviourを継承するクラスが必要ならUnityから追加した方が良く、
interfaceなどクラス以外を追加したい場合はRiderから行った方が良いと思います(そもそもUnityから追加できるのがクラスだけなので)。

ショートカット

これはMacの話ですが、ショートカットをVisual Studioなどに設定すると、置換のショートカットが「Command + H」に設定されます。

が、実際にやってみるとウインドウが最小化されますorz (OS側のショートカットと重なっているため)

そのため、設定のKeymapから適当な組み合わせに変更してあげる必要があります。

おわりに

まだ開発版ということで、複数の変数にエラーがあるとそれらを修正しても画面が赤いまま、といったエラーは見受けられるものの、かなり良い感じで使えています。

デバッグの機能はまだ難しいようですが、スクリプトの編集という機能においては、入力補完がバリバリ効いてかなり便利です。

普段IntelliJ IDEAやAndroid Studioなどを使っている方は、ぜひ触ってみると良いのではないかと思います。

参考