Unity5 メモ2
コンポーネントのアタッチし忘れ防止
[RequireComponent(typeof(Rigidbody2D))]
をクラス宣言の上に書くと、このスクリプトを取り付けたgameobjectに自動的にRigidbody2Dを付けられ、付け忘れ防止になる
typeofの中にスクリプト名を書いて、特定のスクリプトを必須にすることもできる。
Imageなど、UI関連のコンポーネントはcanvasの子のgameobjectにしか適用できないcanvasの描画順
canvas内要素の上から下に順に描画される
複数のcanvas間で描画順を制御したい場合、CanvasのCanvasコンポーネントのSort Orderを調整する(数字が大きいほうが手前)
Render ModeをScreen Space - Cameraにすれば、描画順調整にSortingLayerを使用できるが、 他のcanvasもRender Modeを変える必要がある。
cf. http://albatrus.com/main/unity/7402enum最大数の取得
UnityではSystem.Enum.GetValues(EnumType).Length
でEnumTypeに含まれる要素の数が取得できる。複数のオブジェクトをインスペクター上の配列に一括で追加する
https://www.youtube.com/watch?v=TnJhhz120js (0:20-0:50)ドラッグでオブジェクトを移動
if(Input.GetMouseButton(0)){ float speed = 20f; float mouseX = Input.GetAxis("Mouse X") * speed; float mouseY = Input.GetAxis("Mouse Y") * speed; Debug.Log("x : " + mouseX + ", y : " + mouseY); transform.localPosition += new Vector3(0, mouseY, 0); }
const
const
はintなど基本型にしか付けられない。vector3など構造体をデフォルト引数にする
void hoge(Vector3 s = default(Vector3)){
で(0, 0, 0)がデフォルト引数として使われる。
0以外の場合は、 以下のようにnull許容型で対応できる。
void hoge(Vector3? s = null){ Vector3 pos = s ?? new Vector3(10, 20, 30); }
画面サイズの違いでのUIの変化を確認する
Unityでプレイ中にGameウインドウを拡縮すると違いがわかる可変レイアウト
stretchでは解決できない、画面サイズが変わっても画面の左から1/3の位置に置きたいというような場合、
(Horizontal/Vertical/Grid) Layout Group を使用すると、
子要素の数に応じて自動的にレイアウトが均等に割り振られる。