2015年4月2日木曜日

uGUIを使う場合のコツ



自分用のメモとして

Canvasを使うことについて

Canvasの中身を見てみよう
まずRender Modeがあるが
オーバーレイとかカメラとかある
これを選ぶコツはこのuGUI以外に2Dオブジェクトを
表示させたいのであればカメラの方を選ぶべきで
なぜなら2Dの表示レイヤーを決めれるので
重なり合うuGUIとオブジェクトの優先順位が決めれること
注意点Render Cameraにちゃんと任意のカメラをつけようね
そのほかに3Dの重なりについてはワールドスペースを選ぼう
理由は奥行きで重なりを調整できるからである
あとは
オーバーレイだがこれは
必ず手前に来るので上に重ねること前提で選ぼう

自分は結論として
2Dゲームを作るならRender Modeは
カメラを選びますね

次にCanvas Scalerです
これはビルドするとき重要なスクリプトです
このスクリプトはビルドされたアプリやゲームに使われている
uGUIの自身のキャンバスの大きさを調整するもので
これを調整しないとビルドしたときuGUIの大きさが
おかしくなることがある
自分はこれには必ず一定の調整をしています
自分の例は
まずUi Scale ModeをScale With Screen Sizeにして
Reterence Resolutionに端末で使われるサイズを目安に調整
Screen Match ModeはMatch With Or HeightでもExpandでもいいけど
自分はExpandに調整しています
下の数字はそのままにして調整終了
ちなみに
Match With Or Heightを選んだ場合
上の高さで調節するか横の広さで調節するかに分かれている
自分は端末の画面によってどちらかにするか決めます

Canvas内の調整はこんなもん

次に行く前に
上に書いてあるサイズの調整に
サイズを狂わせないように
まずUIでPanelを作り
Rect TransformのAnchor Presetsをmiddle centerにする
そしてWidthに上のReterence Resolutionに書いたxをHeightにyを
他は基本そのままにする
ImageのColorのアルファを0にしてPanelは完了

やっと下準備完了
UIを入れる時
必ずPanelの子にすること
ボタンでもイメージでも
Panelにドラックドロップする
これは重要必ずそうしてください




ここまではサイズを調整する為のuGUIの作業です

基本的なUIの話をします

スクリプトの話になります
基本的に一番上に書いてある
using UnityEngine;の下にusing UnityEngine.UI;って書かなきゃスクリプトが反応しない
まずButtonのスクリプトでの使い方
Button button = this.GetComponent <Button> ();
button.onClick.AddListener (() => {
// 押したときに動作させたい事をここに
});
上の書いてあることをvoid Stratに入れれば動きます
押した時に反応します
長く押しても反応はしないです
一回押したら一回だけの反応
int push;を上に書き、動作させたい所にpush++;と書いたら
長く押してもpushは一回押すごとに1づつしか増えない
長く押し続けての動作の書き方を調べた
どうやらAdd ComponentでEvent Triggerを追加して
Public void Start(){
押し続けたとき
}
Public void Stop(){
放したとき
}
これを書いたスクリプトをボタンに入れ
Event Triggerを調整
まずAdd New Event Typeを選び
ポインターダウンとかアップとかあるけど
これはボタンを押したときに反応するのがダウン
ボタンを上げたときに反応するのがアップ
まずダウンで
Runtime Onlyのままで
下にはボタンのオブジェクトはそのまま
隣の選択にはcranebottanのStartを選ぶ
その次はアップで
cranebottanのStopを選ぶ
他はそのまま
これで押し続けるボタンの完成

ボタンはこのくらいでおk

テキストはあまり触ってないのでわからないけど
Text.text = "";でほとんどおkじゃないかな

まぁこんなもんかな
ほかにもいろいろあるけど
また次に

おまけとして
キャンバスをスクリプトで表示、非表示にする
this.gameObject.GetComponent<Canvas>().enabled;
これは使い方として
ゲーム途中で操作方法とか出したりしたり
スコア画面とかポーズの画面とかに使える
まず
void Startにfalseを入れる
void Updateに表示させる条件になればtrueを
たとえばUpdateに
if (open) {
this.gameObject.GetComponent<Canvas> ().enabled = true;
} else {
this.gameObject.GetComponent<Canvas> ().enabled = false;       
}
こんな感じに入れれば表示、非表示にすることができる
このスクリプトはCanvasに入れること
注意点は非表示のままテストしても表示しないです
表示したままにして実行をしてください

0 件のコメント:

コメントを投稿