shuzo-kino.hateblo.jp
で使ったIMGUIのお手軽ボタンのアクションとして、
Level1をクリックしたらキューブが、Level2をクリックしたらキャラクターが降ってくる挙動をつくります。
実際のところ
作業の前提
以前の作業で作ったCubeやCapsle(赤米)と、そのイベントやら周りがある前提。
shuzo-kino.hateblo.jp
新しいロボットをAsetts Storeからよみこみ
ロボットは超有名ドコロのSpaceRobotKyle君をアセットストアから導入し、作業中シーンに読み込んでおきます。
assetstore.unity.com
スクリプト
オブジェクトの生成はInstantiate関数でいけました。
古めな情報だと前後に色々ついてた時代もあったみたいですが、
すくなくとも今回の用途ではこの記法で必要なオブジェクトを生成可能。
引数は順番に、
- 対象オブジェクト
- 生成座標(3DならVector3)
- 回転情報 特に必要ないならQuaternion.identity = 回転なし
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Button : MonoBehaviour { public GameObject boxobject; public GameObject robotobject; void OnGUI () { GUI.Box(new Rect(10,10,100,90), "Loader Menu"); if(GUI.Button(new Rect(20,40,80,20), "Level 1")) { Instantiate(boxobject, new Vector3 (0.2f, 0.2f, 0.2f), Quaternion.identity); } if(GUI.Button(new Rect(20,70,80,20), "Level 2")) { Instantiate(robotobject, new Vector3 (0.3f, 0.3f, 0.3f), Quaternion.identity); print("here 2"); } } }
オブジェクトの紐づけ
Button.csはこれまでの作業でButtonTriggerというGameObjectに紐づけてあります。
スクリプトを更新したことで、Inspectorにも項目が増えてますから、画面でオブジェクトを紐づけていきます。
Hierarchyにあるもの以外でも、読み込んでいればAssetsから読みだし可能です。*1
やってみる
デフォでは、こんな感じ。
さっそくLevel1を押下してKyle君を呼び出します。
スクリプトを割り付けてないので、棒立ちですけどね。
更にLevel2を押下しCubeを表示!
*1:私はここで、ロボットをHierarchyに入れてから不可視化方法で四苦八苦しました。考えてみれば、それでは使い辛くて仕方ないでしょうに。