LoginSignup
0

More than 3 years have passed since last update.

脱出ゲームの作り方 6 アイテム使用による電球のONOFF

Last updated at Posted at 2019-10-23

これまでの作業で、

■A.DrawerPnelで引き出しがクリックされたら電球画像を表示し、
ItemBoxに電球を取得する処理を作成した

1.DrawerPnelで引き出しがクリックされたら、電球画像を表示する
脱出ゲームの作り方 2
◇TriggerButtonを押したら電球パネルとテキストを表示

DrawerManager.rb
public void OnClickTrigger()
    {
        LightBulbSetActive(true);
    }

2.上記1.と同時に、ItemBoxに電球の画像を表示する
脱出ゲームの作り方 4
◇itemに電球のデータが取得されたら、電球の画像を表示する

DrawerManager.rb

public void OnClickTrigger()
    {
        LightBulbSetActive(true);
        itemBoxManager.SetItem(ITEM.LIGHT_BULB);
    }

■B.LightstandPanelで、ItemBoxの1つ目と2つ目をクリックして電球をON/OFFするテストをした
脱出ゲームの作り方  5
テスト
Unityエディタで
1つ目のItemBoxの On Click() にLightSwitch()をtrueで設定 :電球が点灯
2つ目のItemBoxの On Click() にLightSwitch()をfalseで設定 :電球が消灯

※設定を解除するときは、On Click()のマイナス(-)ボタンで削除する

アイテムボックスに取得した電球を使うと、電球が点灯する処理を作成する

◇ItemBoxManagerに処理を追加する

アイテムを使用する関数UseItem()に、
アイテムボックスに電球があったら、電球を使用してライトスタンドを点灯する処理

LightStandManagerスクリプトを使えるようにする

LightStandManager(型)、 lightStandManager(変数)
:point_up:
この場合の LightStandManager は自分で作ったデータ型

※エディタでItemBoxPnel(オブジェクト)を選択すると、InspecterのItemBoxManagerスクリプトに
LightStandManagerが出る
スクリプトはコンポーネントなので、他のスクリプトでこのように取得して使える

ItemBoxManager.cs
   [SerializeField] LightStandManager lightStandManager;

アイテムが電球だったら、
lightstandManagerスクリプトのLightSwitch()関数をtrueで実行する
それ以外は何もしない

ItemBoxManager.cs
    public void UseItem(int index)
    {
        switch (itemList[index])            //アイテムが電球だったら、
        {
            case ITEM.LIGHT_BULB:
                lightstandManager.LightSwitch(true);     //LightSwitch()をtrue
                break;
            default:                                    //それ以外は何もしない
                break;
        }
        itemList[index] = ITEM.NONE; // index番目のアイテムを使用したので空にする;
        itemBoxImages[index].sprite = null; //index番目に何も表示しない
    }

※UseItem(int index)の引数は、itemBoxの番号に対応している

◇Unityエディタで

ItemBoxPnel(オブジェクト)を選択し、InspecterでのItemBoxManagerスクリプトに
LightStandManager
が出ているので、LightstandPanel(オブジェクト)をセットする

その下の、4つのItemBoxを全部選択し、
InspectorでItemBoxのButtonコンポーネントの On Click() にItemBoxPanel(オブジェクト)をセットして、
ItemBoxManagerに表示される関数をからUseItem(int)を設定する。
4つの各ItemBoxについて、UseItem(int)の引数(0,1,2,3)を設定して、
ItemBoxと使うアイテムを対応させる

:point_up:
Inspecterで、コンポーネントに設定された値をクリックすると、元のオブジェクトが反転して表示されるので、関連を確認できる
(設定に意図しない書き換えが起こらないように気を付ける)

:point_up:
課題
構成の整理(どのファイルがどの機能を持っているのか)

各オブジェクト
オブジェクトにアタッチしたスクリプト
スクリプトで作成した変数、関数
Inspectorで変数や関数を設定する
これらのつながりを整理する

教材

Unityゲームスタジオ スタジオしまづ
【Unity】初心者からの脱出!? 脱出ゲームの作り方 その6 アイテム使用による電球のONOFF
https://youtu.be/Z4uJWBRvGhk

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0