UnityのコードをSublimeTextで編集するAsset、販売中


概要

身内間でのみ出してたやつ、やっとUnityのAssetStoreに出せた(SublimeSocketAsset)ので、

その他のものと合わせて、SublimeTextでUnity、こんなに便利なんですよ!! 的なまとめを作ることにした。

機能的に「この機能は、ここに載ってないこの機構でもできるよ!」ってのは有ると思うんだけど、

独断と偏見で比べて、まだマシなほうを残していたりする。


判断基準は

・疎結合かどうか。強烈なパス依存とかがあるとドン引き。

・非同期かどうか。コンパイルの度にプチフリするIDEとかつらい。


あとショートカットはMac用で書いてある。


STにUnity C#のシンタックスハイライトを導入

C#で書いていても、Unity用のキーワードとか基底クラスを特別扱いしたい。

専用のシンタックスハイライトがあって便利。


Package Controlから入れると楽。

Command Palette -> package Control: Install Package -> Unity3D


UnityのAPIから補完

Unity C# Snippets

Command Palette -> package Control: Install Package -> Unity C# Snippets

スクリーンショット 2013-06-21 3.35.05.png

時々、APIの情報が古いのか、パラメータの型情報が誤ったやつを出してくるのがあるけど、えらい捗る。


キーボードショートカットでコメントアウト/イン

コメントアウト&インを、command + / などのショートカットからなんとかしたくなるのが人情。

http://www.holoville.com/blog/?p=512


っていうかC#もできないので、そういう文化がない言語なんだな。

MonoDevelopにも無い。


いや良いけど。できるようになるので便利。



エラーとかの行をUnityコンソールからSublimeTextで開く

Unity editorでコンソールを表示した際、エラー内容をダブルクリックで対象の行に

フォーカスした状態でファイルを開く。

http://www.jacobpennock.com/Blog/?p=568

UnityHelperの話も出てるんだけど、個人的にはDashのほうが好き。


今後SublimeSocketAssetに積もうかなーと考えている。



STからUnityのドキュメントを開く

Dashと、

https://itunes.apple.com/jp/app/dash-docs-snippets/id458034879?mt=12


STからDashを起動するプラグイン

Command Palette -> package Control: Install Package -> DashDoc

の組み合わせが、異常に強力。

STでコードを書いている途中、補完が出力したAPIを選択した状態で

Command Palette -> DashDoc: invoke Dash with selected word(syntax-sensitive) 

or

control + alt + h


STのシンタックスハイライトを見て、何が見たいか絞ってくれるので良い。

スクリーンショット 2013-06-21 3.40.18.png




~ここからSublimeSocketAssetの独壇場~

SublimeSocketAsset

https://www.assetstore.unity3d.com/#/content/8003



STからUnityのコンパイルを行う

SublimeTextのビルドシステムを使ったものも有ったんだけど、Unityのパスを手で入れなければならず、

密結合で面倒だったので、SublimeSocketAssetで疎結合にした。


既存リリースの1.3.xだとインストール手順が2段階あって煩雑だが、

申請済みの1.4.x系が通れば、楽になる、、と思う。少しは。

FAQに書いてしまっているレベル。

https://github.com/sassembla/SublimeSocketAsset-support


編集→保存→コンパイル、が非同期にできる。

コンパイルにはUnity自体を使用しているので、Unityでのちゃんとしたビルド結果を取得する事が出来る。


Unityから開いたファイル以外でもコンパイルターゲットにできる。

つまりUnityのファイル監視機構に依存していない。

この辺の手法は、過去の記事とかを見ると何したか察しがつくと思う。


Unityにスクリプトのコンパイルを依頼するためにどう土下座すれば

http://sassembla.github.io/Public/2013:03:17%2013-53-03/2013:03:17%2013-53-03.html



ST上にUnityのコンパイルエラーを出す

無かったので作った。下記エラーやWarningが発生した際、ST上にライブで表示される。

一部、SublimeSocketAsset 1.4.xから対応が増えるかもしれない。


対応しているエラーを無理矢理発生させたのが下の写真。

各行左の丸いのをクリックすると詳細がST上とMacのNotificationに表示される。

スクリーンショット 2013-06-21 4.21.57.png

対応エラー一覧


Exception一般

以下に含まれないエラー一般。

Warning一般

unusedとか。


NullReferenceException

ぬるぽ。 ガッされてしまえ。


ArgumentException

いつ発生するのか忘れた。


You are trying to create a MonoBehaviour using the 'new' keyword.

MonoBehaviourなものを知らずnewしてると出る。実行時に検出される。エラーではないので止まりはしないが、コード上に表示されるようにした。


transform.position assign attempt for ~

Nullな要素のVector3をTransform.positionとかに代入しようとすると出るエラー。式算出とかだと出くわす。


UnityException

いつ発生するのか忘れた。


IndexOutOfRangeException

読んで字のごとく。


InvalidOperationException

いつ発生するのか忘れた。



特筆すべきは、NullなVectorをtransformに対してセットしてしまった時のレアーーーなエラーとか、UnityExceptionが実行時にコード上に直に表示されるところ。

捗るぞ。


ちなみにError/Warning表示はSublimeText自体のログにも出る。

スクリーンショット 2013-06-21 4.50.20.png

InvalidOperationとかいつ出たんだか、、、本当に忘れた。

ほかにもエラーが有ったら教えてほしく。


これらのエラーは検出機構からして1ファイルで設定/拡張可能にしてあるので、自前でエラーを定義してアクションを追加したりできる。



ST上にUnityの動作中のパラメータを出す

無かったので作った。

特定のDebug.Log形式でパラメータをST上に表示できる。

複雑な条件の中に入ったかどうかとか、ログに特徴的な事を書いてUnityのコンソールから探す、とかするのシンドイので、通ったところが光るのが重宝する。

Debug.Logの中身をL: から始めるだけ。


livelog.png



今後のやる気


独自型の補完を出す

1.5.xには入れられると思う。


エラーのQuickFixを出す

ST3から導入できる。強力。


Windows版

ST3の正式版が出たら、Windows版に対応。

でもWinの人はVS使えば良いと思うが。


STからのUnity editor Play

やりたい。


次のエラー行へのジャンプ

いちいちUnityのコンソールを経由するのが面倒なので、

キーバインドかなにかで次のエラーがあるファイル/行を表示するとかしたい。


コード上への負荷表示

コード間の時間的負荷を、コード上に表示したい。


ST上への全値のフィルタ表示

全値に対して、Debug.Log("L:") を仕込まないでもできる、、かもしれない。実験中。



などなど。リクエスト有れば聞くだけ聞きたいです。


そんなわけで、宣伝だった。