冷奴の開発メモ

UnityとかC#とかプログラミングのことをメモしていく場所

2015-12-01から1ヶ月間の記事一覧

IDによるAnimatorの操作

Animatorのパラメータの設定やステートの切り替えには文字列のほかに、Animator.StringToHash()で取得したIDを使用できる。 文字列の場合と比べコストが低いので、Updateなどで頻繁に呼び出すときはIDをキャッシュして使用するべき。

Debug.Break()

Debug.Break()でエディタが一時停止する。

PrefabのApply,Revert

Scene上に設置されたプレハブのInspector上部に表示される Applyボタンを押すと変更が元のプレハブに反映される。 Revertボタンを押すと元のプレハブと同じ状態に戻る。

タブの表示内容のロック

InspectorやProjectの右上にある錠をクリックすると、表示中の内容でロックされる。 Inspectorを複数開いて見比べたり、Projectでアセットの整理をするときに便利。

オブジェクトにカメラを移動

Hierarchyでオブジェクトをダブルクリックすると、 Sceneビューのカメラがそのオブジェクトに移動する。

Tag,Layerの階層化

Tag名やLayer名は/(スラッシュ)で区切ると階層構造にできる。

Inspectorに数式

Inspectorの数値フィールドには数式を入力できる。

Debug.Log()にリッチテキスト

<color=red>や<b>などのリッチテキストは、 Debug.Log()にも使うことができる。</b></color=red>

sealed修飾子

継承したクラスやメソッドにsealed修飾子をつけると、 それ以上継承されなくなる。 これをつけないとインライン展開されないので、 こまめに設定するべき。

UnityEngine.Objectのnull比較

UnityEngine.ObjectはEqualsをオーバーライドしている。 nullと比較する際にDestroyされたかどうかも確認おり、 Destroy済みならnullでなくてもtrueになる。 この比較処理はisを2回使っているなど結構重い。 Object.ReferenceEquals(obj, null)なら普通のnul…

検索結果の保存

Projectの右上の星をクリックすると、検索結果を保存できる。

ドラッグで数値操作

インスペクタの数値入力は左のラベル上で左右にドラッグして増減できる。

イベント関数のコルーチン化

StartやAwakeなどイベント関数は一部を除いて、 返り値をIenumeratorにするとコルーチンとして呼ばれる。

GetComponentをキャッシュ

GameObjectのGetComponentやtransformは処理が重いので Updateの中で参照する場合はStartやAwakeでメンバ変数にキャッシュしておくべき。

ギズモを表示しない

Scene上に表示されるギズモ(Colliderの緑の判定範囲や、Cameraの表示範囲など)は、 インスペクタで対応するコンポーネントを折り畳むと表示されなくなる。

コンポーネントの検索

検索に「t:コンポーネント名」と入力すると、 指定したコンポーネントがついているオブジェクトが表示される。

Hierarchyでダブルクリック

Hierarchyでオブジェクトをダブルクリックすると、 Sceneがそのオブジェクトのところに移動する。

子オブジェクトの展開

Hierarchyでオブジェクトを選択した状態で、 Command(Control)+Alt+右キーを押すと、 子要素の階層が全て展開して表示される。 Command(Control)+Alt+左キーを押すと、 全て畳まれる。