小ネタ
Projects上での右クリックメニューはメニューバーのAssets以下と同じなので、 [MenuItem("Assets/~")]で追加できる。
Animatorのパラメータの設定やステートの切り替えには文字列のほかに、Animator.StringToHash()で取得したIDを使用できる。 文字列の場合と比べコストが低いので、Updateなどで頻繁に呼び出すときはIDをキャッシュして使用するべき。
Debug.Break()でエディタが一時停止する。
Scene上に設置されたプレハブのInspector上部に表示される Applyボタンを押すと変更が元のプレハブに反映される。 Revertボタンを押すと元のプレハブと同じ状態に戻る。
InspectorやProjectの右上にある錠をクリックすると、表示中の内容でロックされる。 Inspectorを複数開いて見比べたり、Projectでアセットの整理をするときに便利。
Hierarchyでオブジェクトをダブルクリックすると、 Sceneビューのカメラがそのオブジェクトに移動する。
Tag名やLayer名は/(スラッシュ)で区切ると階層構造にできる。
Inspectorの数値フィールドには数式を入力できる。
<color=red>や<b>などのリッチテキストは、 Debug.Log()にも使うことができる。</b></color=red>
継承したクラスやメソッドにsealed修飾子をつけると、 それ以上継承されなくなる。 これをつけないとインライン展開されないので、 こまめに設定するべき。
UnityEngine.ObjectはEqualsをオーバーライドしている。 nullと比較する際にDestroyされたかどうかも確認おり、 Destroy済みならnullでなくてもtrueになる。 この比較処理はisを2回使っているなど結構重い。 Object.ReferenceEquals(obj, null)なら普通のnul…
Projectの右上の星をクリックすると、検索結果を保存できる。
インスペクタの数値入力は左のラベル上で左右にドラッグして増減できる。
StartやAwakeなどイベント関数は一部を除いて、 返り値をIenumeratorにするとコルーチンとして呼ばれる。
GameObjectのGetComponentやtransformは処理が重いので Updateの中で参照する場合はStartやAwakeでメンバ変数にキャッシュしておくべき。
Scene上に表示されるギズモ(Colliderの緑の判定範囲や、Cameraの表示範囲など)は、 インスペクタで対応するコンポーネントを折り畳むと表示されなくなる。
検索に「t:コンポーネント名」と入力すると、 指定したコンポーネントがついているオブジェクトが表示される。
Hierarchyでオブジェクトをダブルクリックすると、 Sceneがそのオブジェクトのところに移動する。
Hierarchyでオブジェクトを選択した状態で、 Command(Control)+Alt+右キーを押すと、 子要素の階層が全て展開して表示される。 Command(Control)+Alt+左キーを押すと、 全て畳まれる。
Debug.Log()の第2引数にGameObjectを渡すと、 ログをクリックしたときにそのGameObjectが選択される。
Time.deltaTimeはFixedUpdate()内で呼ばれると、 Time.fixedDeltaTimeの値になる
Unityのインストールフォルダ以下(Macはパッケージ内)にある /Resources/ScriptTemplates/にファイルを置くと スクリプトテンプレートを追加できる。
並べ替えたタブの状態は、右上のLayoutボタンから保存・切り替えできる。
Shift+Spaceで、フォーカスがあっているタブが最大化。