Unity で Sublime Text3 を使う (Unity + SublimeText + OmniSharp)

## OmniSharpを導入したSublime Text

![omni_main_sample.gif](https://qiita-image-store.s3.amazonaws.com/0/68827/77231742-ad20-8476-e62c-8e575e561f42.gif)

初めまして。普段はScalaでサーバー書いたり，Unityでゲームつくったり色んなプログラミングに挑戦中のものです。

Unityで他のエディタを使う方法を見いだしてみました。

前々からMonodevelopは使い勝手が悪く，非常にストレスだった。
画面分割できないし，何かと嫌だった。
検索機能とか，定義まで飛ぶ機能はなかなかすばらしいけど，その他の悪い面がその良さを見事にかき消していた・・・・。
そこで，前々からエディタを変えたいと思っていたんですが，やはり，MonoDevelopの補完機能は優秀で，ほかのエディタにいくのはつらかった。

そんなとき，こんなものを見つけました。
[OmniSharp](http://www.omnisharp.net/)

ぐぐってもなかなかやり方が出てこず，困ったのでまとめてみます。
初めてのMarkdown,初めてのQiitaですが[これ](http://qiita.com/Qiita/items/c686397e4a0f4f11683d)見ながら頑張ります。

### セットアップ環境
- Mac OS X Mavericks
- Sublime Text 3

## 0. OmniSharpがやってくれる事

1. 自分の作成したプログラムとUnityEngine等の補完
2. シンタックスチェック
3. 静的なチェック (関数の引数の型間違い，数間違い，存在しない変数名のエラー)
4. その他便利機能（定義に飛んだり）

正直1,2だけで僕に取っては十分です。
既にあるUnity CompletionなどのSublime Textは自作クラスには反応してくれませんが，
OmniSharpでは自作クラスの補完もちゃんとききます。

## 1. Monoをインストールする

C#のプラグインを使うために必要みたいです。
こちらのサイトから，ダウンロードし，pkgファイルを実行してインストールします。
ターミナルでmonoというコマンドが通っていたら，成功しています。

Monoのダウンロード : [Mono](http://www.mono-project.com/download/)

## 2. Sublime TextにOmniSharpをインストールする

Sublime TextにPackage Controllはインストール済でしょうか。
インストールがまだの方は下記のサイトを参考にインストールしてください。
[Sublime Textをインストールしてまずやること](http://keidrun.tumblr.com/post/73033053898/tips-sublime-text-sublime-text)

⌘+Shift+Pでパッケージ一覧？を表示してinstall Packageと入力。
Enterをたたいて，検索エリアにOmniSharpと打って，出てきたらEnterをたたいてインストール。

## 3. プロジェクトのslnファイルを読み込ませる

UnityプロジェクトフォルダをSublime Textで開きます。
やりかたは，メニューバーのProject > Add Folder To Project..
をクリックして，Unityプロジェクトフォルダを選択します。
そして，Project > Save Project As..をクリックして，プロジェクトフォルダにSublime Textのプロジェクトファイルを保存します。
次に，そのファイルを開いて

```json:hogehoge.sublime-project
"solution_file" : "./hogehoge-csharp.sln"

```
を追加します。
[追記]
hogehoge-csharp.slnですが，作ったばかりのプロジェクトにはslnファイルはありません。
そういった場合は，Unityを開き，Assets > Sync MonoDevelop Projectをクリックするとslnファイルが作成されるので，それを使います。

多分，これで一応Sublime Textを再起動すれば，補完が効くはずです！

## 4. 試してみる

![complete_test.gif](https://qiita-image-store.s3.amazonaws.com/0/68827/36fdda29-f898-fa17-eb69-2be99a098c0b.gif)


きたーー！！！！！

ためしに，メソッドを追加して，補完チェック。

![complete_original.gif](https://qiita-image-store.s3.amazonaws.com/0/68827/c1c7111a-6f2c-6bd5-6ffe-7e41ad7ac0c5.gif)


最高・・・たまらん・・・。

これだけで虜なんですが，さらに・・。
すでにいくつか見えていますが，シンタックスエラーがあると

![complete_error.gif](https://qiita-image-store.s3.amazonaws.com/0/68827/a0c5925f-49ad-f01e-0210-bc8b2bcd7a8c.gif)


(存在しないクラスの変数を作ろうとしてます。)
教えくれる・・。優しい・・・好き・・。


## 5. [追記] Sublime Textおすすめの設定

SublimeTextでは⌘+Pでファイル一覧が表示され，そこからファイルに飛ぶ事が出来ますが，Unityにはいろんな形式のファイルがあり，邪魔になります。なので，sublime-projectファイルに以下のようにすると捗ります。

```json:hogehoge.sublime-project
{
    "folders":
    [
        {
            "follow_symlinks": true,
            "path": "Assets",
            "name": "Assets",
            "file_include_patterns":
            [
                "*.cs"
            ]
        }
    ],
    "solution_file": "./hogehoge-csharp.sln"
}
```

これでcsファイルしか表示されなくなり，左のファイル一覧はAssetsフォルダ以下のみ表示されます。便利！

## 6. Warningがすごく出る

本当にすばらしいOmniSharp。
ありがとう・・。

しかし，ちょっと弱点があってWarningが出過ぎなんですよね。
変数にはアンダースコアをつけなければいけないとか，知らんよw

なので，回避方法は2つありまして，メニューバーから
Sublime Text > Preferences > Package Settings > OmniSharp > Setting Default
を開きます。
すると，またjson形式の設定ファイルが開かれます。

```json:OmniSharpSublime.sublime-settings
"omnisharp_onsave_codecheck" : false
```

としてやれば，Warningは出てきません。が，もちろんErrorもでませんw

なので，Sublime Text > Preferences > Package Settings > OmniSharp > Setting User
を見てみると，

```json:OmniSharpSublime.sublime-settings
{
	"omnisharp_server_config_location": "/path/to/config.json"
}
```

こうかいてありました。これを開いてみると，

```json:config.json

  "IgnoredCodeIssues": [
    "^Keyword 'private' is redundant. This is the default modifier.$",
    ".* should not separate words with an underscore.*",
    "^Name should have prefix '_'. (Rule 'Fields').$",
    "^Using directive is not used by code and can be removed safely.$"
  ]
```

ここに，無視する警告文を書けば良いみたいですね。
した2つは僕が追加したものです。書き方わかってません（）

と，こんな感じでSublime Textに移行することができました〜〜！！！！やった！！！
もちろん，エディタにはこだわりがあると思います。
OmniSharpのサイトをみるとVimやEmacsにも対応しているみたいです。

あ，Sublime Text2はどうなんでしょ？わからない・・

Emacsだけやってみました。Sublimeの場合はPackage Installでかなりいろいろやってくれるんですが，Emacsの場合は結構いろいろしなくちゃいけません。
そもそも，OmniSharpというのはScalaのEnsimeと同じでローカルにサーバーを立てて補完をするっぽいです。
なので，Emacsの場合は手動でサーバーをインストールしなくてはいけません。
これに関しては結構他にネットにあがってたので，ぐぐってみてください。

以上，ありがとうございました！
間違いがある可能性高いのでうまく行かない場合はコメントお願いします。

## 7. [追記] OmniSharpがErrorで動かなくなった時

僕はUnity開発をずっとSublimeでやってきましたが，最近エラーで動かなくなってしまいました。

```
error talking to http://localhost:55555/ ...
```

忘れましたが，確かこんな感じのエラーでした。
定番ではありますが，こういうときは

### OmniSharpを削除する

Sublimeを開いて，`⌘ + Shift + P`でコマンドペレットを開き，`Remove Package`を選択。
OmniSharpと入力してOmniSharpを削除する。

### OmniSharpをもう一度インストールする

この手順は最初に導入した時と同じやり方です。