UnityでUI上にボタンを配置してボタンからメソッドを実行させる最小構成

UI上にボタンを表示してタッチ/クリックできるようにします。

作業手順

  1. GUIスキンを用意
  2. OnGUIイベントにボタン表示と処理を書いたスクリプトを用意
  3. 実行

GUIスキン

GUIをProject上を右クリックしてGUI Skinを選択する。

Unity_Button_WhereIsGUIAsset

黒いアイコンのAssetが出現。

これを選択してInspector上で各種定義を行う。

今回はボタンをメインで扱うのでボタンの要素を触ってみる。
Unity_Button_UISkinInspector

“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をドラッグ&ドロップで割り当てる。

Unity_Button_SetUISkinToScript

これでGUISkinで定義したボタンの色などが適用される。やらないとデフォルトの定義が割り当てられるので不要ならば”割り当てない”選択もアリ。

そして Shift + Command + N でNullオブジェクトを生成し、そのコンポーネントとしてスクリプトをドラッグ&ドロップで割り当てると完成。

ちなみにだけど、ほんとは

gameObject.FindWithTag("Player").SendMessage("Kill")

とかでメッセージ送信だけにしておくべき。が、最小構成ではなくなるので今回は凄く単純なスクリプトにしておきました。

↓結果はかの通り。文字色が赤いのはマウスオーバーのタイミングでキャプチャしたため。

Unity_Button_result

参考

http://www.uxic.net/archives/tag/unity

Unity入門 ~高機能ゲームエンジンによるマルチプラットフォーム開発~

雑記

本件とちょっと主旨ズレるけどサンプルコード載せてるサイトでちょくちょく入ってる

var sw:int = Screen.width;

というコードがあると「あ、Screenってクラスから何か取得できるんだ、へー」って事があって助かる。

前に一度、サンプルコードはどんどん載せるべき、というはてなのエントリがあったけどその通りだと思う。

UnityでUI上にボタンを配置してボタンからメソッドを実行させる最小構成」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です