LoginSignup
0
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

0
0
1

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
  3. You can use dark theme
What you can do with signing up
0
0