ボタンを押すことで、プレハブの切り替えができる仕組みをつくりましょう。
ボタン1は赤、ボタン2は青、ボタン3は緑に変更できます。
関連記事:
ボタンを押すたびに順番にオブジェクトを切り替える
1秒おきにPrefabを変える
発射するPrefabの種類を順番に変える
360°全方位に向けて発射
種類の違うオブジェクトを順番に生成する
Prefabの準備
Sphereを3個作成して色をつけ、名前をそれぞれ次のように変更します。
3つのBallすべてにリジッドボディを追加します。
コンポーネントを追加 > 物理 > リジッドボディ
それぞれプロジェクトビューにドラッグ&ドロップし、Prefab化します。
Ballの元データは削除しておきましょう。
配列の中にPrefabを入れる
空のオブジェクトを作成します。
ClickShot.csを作成し、GameObjectに追加します。
ClickShot.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class ClickShot : MonoBehaviour { public GameObject[] ballArray; private int change; void Start() { change = 0; } public void Button1() { change = 0; } public void Button2() { change = 1; } public void Button3() { change = 2; } void Update() { if(EventSystem.current.IsPointerOverGameObject()){ return; } if (Input.GetMouseButtonDown(0)) { GameObject ball = GameObject.Instantiate (ballArray[change])as GameObject; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Vector3 dir = ray.direction; ball.GetComponent<Rigidbody>().AddForce(dir * 3000); } } } |
GameObjectのインスペクターに、サイズというフィールドが出来ます。
使いたいPrefabの数は3個なので、「3」と入力します。
要素0~2のフィールドができるので、ここにBallのプレハブデータ1~3を入れましょう。
ボタンの作成
ボタンを3個作成して、名前をそれぞれ変更しました。
Canvasを選択し、UIスケールモードを「画面サイズに拡大」に変更します。
画面の拡縮に合わせて、ボタンの大きさも調整されます。
3つのボタンがこのように配置されています。
Buttonの設定を行います。
まずはButton1から、以下のような手順で設定します。
Button2、Button3も同様の手順で、それぞれ設定を行いましょう。
Button2では、ClickShot > Button2() を選択。
Button3では、ClickShot > Button3() を選択します。
ゲームプレイしてみましょう。
ボタンを押すと、それぞれボールのPrefabデータが切り替わります。
関連記事:
ボタンを押すたびに順番にオブジェクトを切り替える
1秒おきにPrefabを変える
発射するPrefabの種類を順番に変える
360°全方位に向けて発射
種類の違うオブジェクトを順番に生成する