ふりかえり
前回は転生機能を実装しました!
何度も挑戦してどんどん強くなれる、やり込み要素のあるゲームに近づきましたね!
パネル開閉機能調節!
現在、ゲームには以下のようなパネルがあります:
- 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体験を実現しました!
パネルが重なるストレスがなくなり、使いやすさがグッと向上しました!
次回予告
次回は今後の方針についてまとめたいと思います!
お楽しみに!