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

