UnityのUI

(2017-03-08)

Canvas

UI要素を配置するための領域。

renderMode

  • Overlay: スクリーンに対してオーバーレイするように表示

  • Camera: Cameraから指定した距離(planeDistance)離れた前方に表示

  • World Space 他のオブジェクトと同じように表示

Canvas Scaler

  • UI Scale Mode (World Space以外)

    • Constant Pixel Size: 画面サイズに関わらず同じピクセル数にする

    • Scale With Screen Size: 画面サイズでスケールさせる

    • Constant Physical Size 解像度や画面サイズによらず物理的に同じサイズにする

  • Dynami Pixels Per Unit (World Spaceのみ): Textなどの動的に生成されたビットマップの解像度

1と3でそれぞれこんな感じになる。

Dynamic Pixels Per Unitが1のとき

Dynamic Pixels Per Unitが3のとき

AutoLayout

Vertical Layout GroupGrid Layout Group など。これらのComponentを追加すると子要素のTransform(の一部)が自動で設定される。

Content Size Fitter

Layout Component要素に合うように自動で調整される。

レイアウトを作る

RectTool(ツールバーボタンの一番右の四角いやつ)を選択して、Pivot, Localにするとよい。 Canvasにいろいろ置いていって、Anchorを選んでRect Transformを設定していく。 あとはPrefabにしてInstantiateするなりして表示する。

using UnityEngine.UI;

public GameObject dialogWindow;
var obj = Instantiate(obj, new Vector3(0, 0, 200), Quaternion.identity);

var hogeText = obj.transform.Find("panel/hoge").gameObject.GetComponent<Text>();
hogeText.text = "fuga";

var fugaButton = obj.transform.Find("panel/fuga").gameObject.GetComponent<Button>();
fugaButton.onClick.AddListener (() => {
    Debug.Log ("onClick");
});