[Unity]いつものコードを10秒速く書く、VisualStudioのコードスニペット(配布あり)

この記事は Unity 2 Advent Calendar 2015 の 8 日目です。

7 日目は @kuriharaan 氏の AndroidでビルドはもういいRunしたいってとき でした。

はじめに

\デーン/

public void Update ()
{
    Animator animator = GetComponent<Animator>(); // Update 毎に GetComponent
    if (animator.GetFloat("speed") > 5.0f) { // string 版 GetFloat
        animator.SetBool("isRunning", true); // string 版 SetBool
    }
}

…はい、心がざわつきますよね!実行コストの点でも、書くのが面倒という点でも、理由がなければこんなコードは書きたくないですね。

よく見かけるのは Start でキャッシュするやつでしょうか。

Animator animator;
public void Start ()
{
    animator = GetComponent<Animator>();
}

私は初回アクセスでキャッシュするのが好みですが、

Animator _animator;
public Animator animator
{
    get { return _animator ? _animator : (_animator = GetComponent<Animator>()); }
}

いずれにしても、(Animator に限らず) この手のプロパティはよく書くことになるので、楽に書けるようにしたいと思います。

目次

  • Visual Studio のコードスニペット紹介 (知っている方は読み飛ばしてください)
  • 私が使っているコードスニペットの紹介と配布 (特にプロパティ系)

Visual Studio のこと

Unity 5.2 あたりから Visual Studio Tools for Unity がインストーラーに含まれるようになり、手動で何もしなくても Visual Studio 連携ができるようになりました。

確認していませんが Visual Studio Community 自体も Unity のインストーラでも入れられるようになったとの話もあるようです。

もしこれをお読みの方が MonoDevelop を使っていて、しかし MonoDevelop を愛してまではいないようでしたら、この記事を読むのをやめて Visual Studio をインストールしてみるのに時間を使うのがオススメです。画面を左右に割って 2 つのスクリプトを見比べたり、Ctrl + Shift + M or Q でよく使う Unity の関数を一瞬で入力できますよ!(雑な説明)

コードスニペットとは

こういやつです。


例えば upropc + TAB キー 2 回以下が出るようにできます。

Component _target;
public Component target
{
    get { return _target ? _target : (_target = GetComponent<Component>()); }
}

この Component と target は置換できるようになっているので、さらに TAB を押してから Component を Animator に、target (1 箇所で OK) を animator に書き換えれば終わりです。


詳しく知りたい方は公式の コード スニペット - MSDN - Microsoft をどうぞ。

デフォルトで定義済みのスニペットは Visual C# のコード スニペット - MSDN - Microsoft に載っています。

自分でスニペットを作りたい方は以下が参考になります。残念ながら GUI でスニペットを作成できる公式の Snippetizer は Visual Studio 2013 でしか動きませんでしたが、2013 で作って 2015 に持ってくることはできます。xml ですので、1 つ拾ってきて編集してもよいと思います。

 コードスニペットをVisual Studio拡張機能として広く配布しよう - Build Insider

Unity 用コードスニペット

ダウンロード :


インストール :
  1. Visual Studio を開く
  2. ツール > コードスニペットマネージャー
  3. 言語を C# に変更
  4. My Code Snippet を選択
  5. フォルダパスをコピーしてエクスプローラーで開く
  6. ダウンロードした .snippet ファイルを全てそこにコピー



使い方 :
  1. ソースコード上で upropc 等のショートカットを入力し、TAB キーを 2 回押す (または右クリックからスニペットを挿入)
  2. 置換する箇所を書き換え

簡単な紹介 :

ショートカット主なメソッド等
upropcComponent.GetComponent
upropccComponent.GetComponentInChildren
upropcpComponent.GetComponentInParent
upropcx上記以外用 (Transform.Find 等お好きに)
upropgcObject.FindObjectOfType (シーン全体から)
upropgtGameObject.FindWithTag (シーン全体から)
apropbAnimator.GetBool / SetBool
apropfAnimator.GetFloat / SetFloat
apropiAnimator.GetInteger / SetInteger


9 日目は trapezoid 氏です。

コメント