ゲーム化!tomo_manaのブログ

ゲーム化!tomo-manaのブログ

Unityでゲームを作る方法について紹介しています

Unity×会計#6 表示の切り替えスイッチ (Unity 2019.4.4f1)

f:id:tomo_mana:20211220010341p:plain

今回は、直接簿記とは関係ない内容ですが、画面に簡単な表示切替用のスイッチ(タブ切替機能)を追加します。

構成

表示の切り替えには、GameObjectの表示切り替え機能(SetActive)を使います。まとめて表示を切りたいものをグループ化しておけば、スイッチ一つで表示の切り替えができます。

今回は2つのスイッチを追加します。今回の画面構成は、一部の機能は共通で使っています。そのため、グループ分けを少し工夫します。

f:id:tomo_mana:20210815094219p:plain
構成イメージ

実際の画面にあてはめると以下になります。

f:id:tomo_mana:20210815094305p:plain
実際の画面にあてはめると

Hierarchy

2つのボタンと、ボタンを束ねるEmtpy Object でスイッチを構成します。

f:id:tomo_mana:20210815150838p:plain
Hierarchy - 表示切替スイッチ

コード

今回は2モード用の切り替えに特化したコードになっています。ボタン数と、ボタンを押された時の処理(ButtonClicked)を変更すれば、3つ以上のモードにも対応できそうです(そのうちに)。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ModeSwitch : MonoBehaviour
{
    [SerializeField]
    GameObject[] window = new GameObject[2];
    
    void ButtonClicked(int buttonNo)
    {
        Debug.Log("Button Clicked = " + buttonNo);
        if( buttonNo == 0 ){
            window[0].SetActive(true);
            window[1].SetActive(false);
        } else 
        if( buttonNo == 1 ){
            window[0].SetActive(false);
            window[1].SetActive(true);
        }
    }
    
    // Start is called before the first frame update
    void Start()
    {
        int i = 0;
        Button button;
        foreach( Transform child in gameObject.transform ){
            button = child.gameObject.GetComponent<Button>();
            if( !ReferenceEquals(button, null) ){
                int ii = i;
                button.onClick.AddListener(() => ButtonClicked(ii));
                i++;
            }
        }
        ButtonClicked(0);
    }
}

先ほどのコードをModeSwitchゲームオブジェクトに割り当てると、2つのゲームオブジェクトを指定する枠が作られます。

f:id:tomo_mana:20210815094437p:plain
Component - ModeSwitch

先ほどのA、B画面をそれぞれ割り当てます。

f:id:tomo_mana:20210815143520p:plain
スイッチへのゲームオブジェクトの割り当て

動作テスト

ボタンの名前は、それぞれ「貸借対照表」「現金仕訳」としています。
それぞれのボタンを押すと、表示が切り替わるのが確認できます。

f:id:tomo_mana:20210815151434p:plain
動作テスト


ゲームのURL(前回までと同じURLです)
tomo-mana.hatenablog.com

次回

言語切替スイッチを実装します。