準備
-
Canvas
- 右クリック > UI > Canvas
-
スクリプト
- Canvasに
UIController.cs
をアタッチ
(UI周りを一括で操作する)
- Canvasに
-
画像
- 使用する画像をスプライトにする
Texture Type > Sprite(2D and UI)
Applyを押す
- 使用する画像をスプライトにする
Button
UI > Button
OnClickから関数を実行する
BGMを切り替えたり、ステージを選択したり、スタート画面を閉じたり...
Slider
UI > Slider
Min Value
とMax Value
で返す値を、
Whole Numbers
で整数かどうかを指定
OnValueChanged
に値が返ってくるので、受け取りたい関数を登録する
void OnSlider(float _value) {
print(_value);
}
画像を差し替えれば自作のスライダーをつくれる
Anchor
用途 | 操作 |
---|---|
ピボットの位置も一緒に寄せる | shiftを押しながら |
矩形も一緒に寄せる | altを押しながら |
ピボットと矩形も一緒に寄せる | shift+altを押しながら |
中央で大きさが変わらない | center, middle |
左下に固定 | left, bottom |
画面いっぱいに広がる背景 | stretch, stretch |
縦横比を崩さずに背景画像を隙間なく広げる
cssのbackground-size: cover;
の状態
Reference Resolutionは画像のサイズ
以下のTipsを参照
http://www.metalbrage.com/UnityTutorials/uGUI/Scaler.html
画像の一部のみを拡縮する
SpriteEditor
https://docs.unity3d.com/jp/540/Manual/SpriteEditor.html
画像を9分割して、四隅は固定、その他の部分を拡縮する
Anchorにstretch, stretchの指定をすれば
スクリーンサイズに応じて全画面に広がる背景の完成
横幅に合わせてロゴを拡縮
-
ロゴの横幅を最小で0.3、最大で0.7にすることで、
常に画面の横幅の40%のサイズを保つ -
Preserve Aspectにチェックを入れることで
縦横比を固定する
フェードイン/フェードアウト
Image
ImageやPanelなどImageコンポーネントがついているものは、
colorのalphaを操作する
GetComponent<Image>().color = new Color(red, green, blue, alfa);
CanvasGroup
CanvasGroup
https://docs.unity3d.com/jp/540/Manual/class-CanvasGroup.html
CanvasにはImageコンポーネントはついていないので、
CanvasGroupのalphaを操作してフェードする
GetComponent<CanvasGroup>().alpha = 1.0f;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UIController : MonoBehaviour {
CanvasGroup CG;
void Start () {
CG = GetComponent<CanvasGroup>();
}
void FadeOut() {
iTween.ValueTo(
gameObject,
iTween.Hash(
"from", 1f,
"to", 0f,
"time", 1f,
"onupdate", "UpdateFade",
"oncomplete","CompleteFade"
)
);
}
void UpdateFade(float value){
CG.alpha = value;
}
void CompleteFade(){
gameObject.SetActive(false);
}
}
参考
Unity – iTweenを使ったuGuiのフェードイン/フェードアウト
UIをまとめてフェード【Unity】【uGUI】
RenderMode
https://docs.unity3d.com/jp/540/Manual/class-Canvas.html
https://docs.unity3d.com/jp/540/Manual/UICanvas.html
Screen Space – Overlay
キャンバスはスクリーン合わせて縮小拡大された後、シーンやカメラへの参照をせずに直接レンダリングされます。
一般的な使い方。UIが一番前に描画される。
Screen Space – Camera
Canvas は指定したカメラの前にいくらかの距離をとって、平面オブジェクトの上にあるかのようにレンダリングされます。
複数のCanvasを用意した時に、描画する順番をSorting Layerで指定することができる。
World Space
UI をシーン内の平面オブジェクトであるかのようにレンダリングします。
キャラの名前やステータスの表示、吹き出しのセリフなどに使える。キャラにボタンを押させるなど、シーン内でのインタラクティブな要素としても使える。