UI上にボタンを表示してタッチ/クリックできるようにします。
作業手順
- GUIスキンを用意
- OnGUIイベントにボタン表示と処理を書いたスクリプトを用意
- 実行
GUIスキン
GUIをProject上を右クリックしてGUI Skinを選択する。
黒いアイコンのAssetが出現。
これを選択してInspector上で各種定義を行う。
今回はボタンをメインで扱うのでボタンの要素を触ってみる。
“Hover”はマウスオーバー時の変化であり、iOSではタッチのみなので表現されない。
実際には”Active”のみ。
スクリプト
var skin:GUISkin;//グローバル変数 function OnGUI(){ GUI.skin = skin; var sw:int = Screen.width; var sh:int = Screen.height; var buttonRect:Rect = Rect(0, sh*7/8, 60,30); if(GUI.Button(buttonRect,"left")) { Destroy(gameObject.FindWithTag("Player")); }
スクリプトを書き終えたらGUIを割り当てる。スクリプ上のグローバル変数化しているSkinに対して、先に用意したGUISkinをドラッグ&ドロップで割り当てる。
これでGUISkinで定義したボタンの色などが適用される。やらないとデフォルトの定義が割り当てられるので不要ならば”割り当てない”選択もアリ。
そして Shift + Command + N でNullオブジェクトを生成し、そのコンポーネントとしてスクリプトをドラッグ&ドロップで割り当てると完成。
ちなみにだけど、ほんとは
gameObject.FindWithTag("Player").SendMessage("Kill")
とかでメッセージ送信だけにしておくべき。が、最小構成ではなくなるので今回は凄く単純なスクリプトにしておきました。
↓結果はかの通り。文字色が赤いのはマウスオーバーのタイミングでキャプチャしたため。
参考
http://www.uxic.net/archives/tag/unity
雑記
本件とちょっと主旨ズレるけどサンプルコード載せてるサイトでちょくちょく入ってる
var sw:int = Screen.width;
というコードがあると「あ、Screenってクラスから何か取得できるんだ、へー」って事があって助かる。
前に一度、サンプルコードはどんどん載せるべき、というはてなのエントリがあったけどその通りだと思う。
Deep thought! Thanks for coituibrtnng.