43歩目 パネル開閉機能調節! Unityで1日1ステップ!ノンフィールドRPG開発日記

1日1歩開発日記

ふりかえり

前回は転生機能を実装しました!

何度も挑戦してどんどん強くなれる、やり込み要素のあるゲームに近づきましたね!

パネル開閉機能調節!

現在、ゲームには以下のようなパネルがあります:

  • PowerUpパネル(G強化)
  • Artifactパネル(アーティファクトのガチャと強化)
  • Prestigeパネル(転生とマナ強化)
  • Settingsパネル(ステータス表示・音量調節など)

しかしこれらのパネルは複数同時に開いてしまう状態でした。

そこで今回は:

  • 別のパネルを開くと、他のパネルが閉じるようにする
  • 「ホームボタン」で全パネルを一括で閉じる

という改善を行いました!

スクリプトの変更

HomeManager.cs

ホームボタンを押すと全てのパネルが閉じるようにします。

using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class HomeManager : MonoBehaviour
{
    [Header("UI References")]
    public Button homeButton; // ホームボタン
    public TextMeshProUGUI homeButtonText; // ホームボタンテキスト

    [Header("Manager References")]
    public PowerUpManager powerUpManager;
    public ArtifactManager artifactManager;
    public PrestigeManager prestigeManager;
    public SettingsManager settingsManager;

    void Start()
    {
        // ホームボタンのイベントリスナーを設定
        if (homeButton != null)
        {
            homeButton.onClick.AddListener(OnHomeButtonClicked);
        }

        // ボタンテキストを設定
        if (homeButtonText != null)
        {
            homeButtonText.text = "ホーム";
        }
    }

    // ホームボタンがクリックされた時の処理
    public void OnHomeButtonClicked()
    {
        Debug.Log("ホームボタンがクリックされました。全てのパネルを閉じます。");
        CloseAllPanels();
    }

    // 全てのパネルを閉じる
    public void CloseAllPanels()
    {
        // PowerUpパネルを閉じる
        if (powerUpManager != null)
        {
            powerUpManager.ClosePowerUpPanel();
        }
        
        // Artifactパネルを閉じる
        if (artifactManager != null)
        {
            artifactManager.CloseArtifactPanel();
        }
        
        // Prestigeパネルを閉じる
        if (prestigeManager != null)
        {
            prestigeManager.ClosePrestigePanel();
        }
        
        // Settingsパネルを閉じる
        if (settingsManager != null)
        {
            settingsManager.CloseSettingsPanel();
        }
    }

    // 指定されたパネル以外を閉じる
    public void CloseOtherPanels(string currentPanel)
    {
        switch (currentPanel)
        {
            case "PowerUp":
                if (artifactManager != null) artifactManager.CloseArtifactPanel();
                if (prestigeManager != null) prestigeManager.ClosePrestigePanel();
                if (settingsManager != null) settingsManager.CloseSettingsPanel();
                break;
            case "Artifact":
                if (powerUpManager != null) powerUpManager.ClosePowerUpPanel();
                if (prestigeManager != null) prestigeManager.ClosePrestigePanel();
                if (settingsManager != null) settingsManager.CloseSettingsPanel();
                break;
            case "Prestige":
                if (powerUpManager != null) powerUpManager.ClosePowerUpPanel();
                if (artifactManager != null) artifactManager.CloseArtifactPanel();
                if (settingsManager != null) settingsManager.CloseSettingsPanel();
                break;
            case "Settings":
                if (powerUpManager != null) powerUpManager.ClosePowerUpPanel();
                if (artifactManager != null) artifactManager.CloseArtifactPanel();
                if (prestigeManager != null) prestigeManager.ClosePrestigePanel();
                break;
        }
    }
} 

PowerUpManager.cs

たとえばPowerUpパネルを開くとき
これで他のパネルを自動で閉じてくれるようになります。

    public void TogglePowerUpTab()
    {
        isTabOpen = !isTabOpen;
        
        if (powerUpTab != null)
        {
            powerUpTab.SetActive(isTabOpen);
        }
        
        if (isTabOpen)
        {
            // 他のパネルを閉じる
            if (homeManager != null)
            {
                homeManager.CloseOtherPanels("PowerUp");
            }
            UpdateUI();
        }
    }

Unityでの設定

ホームボタンを作成
UI → Buttonで新規作成し、「ホーム」などと表示

HomeManager.csをアタッチ
新しいGameObjectにHomeManagerを追加

各マネージャーをInspectorで紐付け
PowerUpManager, ArtifactManager, PrestigeManager, SettingsManagerを登録

ボタンにイベントを設定
homeButton.onClick → OnHomeButtonClicked() を呼ぶように設定

動作確認

  • 各パネルがしっかり切り替わるようになりました。
  • 「ホームボタン」で一括でパネルが閉じるのも確認できました!

まとめ

今回は複数パネルが同時に開いてしまう問題を修正し、より快適なUI体験を実現しました!

パネルが重なるストレスがなくなり、使いやすさがグッと向上しました!

次回予告

次回は今後の方針についてまとめたいと思います!

お楽しみに!

タイトルとURLをコピーしました