54歩目 ガイド機能を実装! Unityで1日1ステップ!ノンフィールドRPG開発日記

1日1歩開発日記

ふりかえり

前回は、プレイヤーのゲーム内実績を振り返る「記録機能」を実装しました。

これにより、これまでのプレイ成果が可視化され、「あと少しで〇〇を達成できる!」というような、さらなるやり込みのモチベーションへと繋がるようになります。プレイヤーが自分の成長を実感できる仕組みは、長期的なプレイにおいて非常に重要な要素です!

ガイド機能を実装!

今回は、メニューに「ガイド」機能を追加しました!

これは、初めてゲームをプレイするユーザーが迷わないようにするためのサポート機能です。チュートリアルとは異なり、必要なときに自分で確認できる「プレイ中のヘルプページ」のような位置づけです。

特にスマホゲームでは、チュートリアルが煩雑すぎると離脱されがちですが、かといって案内がなさすぎると初心者は困惑してしまいます。その点、このガイド機能はバランス良く補完してくれるものになると考えています。

ガイドの構成は5カテゴリ!

ガイドでは、以下の5つのカテゴリに分けて情報を提供します。

カテゴリ内容
基本ゲームのストーリーや世界観、基本の進め方などの概要を紹介
戦闘実際のバトル画面の説明、どのように戦闘が進むかを解説
強化G強化のやり方や、ステータス強化の画面の見方など
AF(アーティファクト)ガチャの使い方、AFの装備・強化方法を詳しく紹介
転生転生の手順や、マナ強化の仕組みなど、上級プレイに向けた内容


このようにカテゴリ分けすることで、必要な情報だけをすぐに見つけやすい構成となっています。

スクリプトの変更

GuideManager.cs

機能概要
  • ガイドボタンが押されると、それに対応するガイドパネルを表示する
  • 他のパネルは自動的に非表示になるため、画面がごちゃごちゃしない
  • アクティブなパネルの状態管理や、パネルの開閉状態のチェックも可能
処理の流れ
  1. GuideItemクラス定義 各ガイドには「名前」「ボタン」「パネル」の3要素があります。これらをまとめたクラスを用意し、Listで管理します。
  2. 初期化処理(Start) ゲーム開始時に、各ボタンに対応するクリックイベントを登録し、全パネルを非表示にします。
  3. ボタンを押すとパネル表示(ShowGuidePanel) 指定されたインデックスのガイドパネルのみを表示し、それ以外は非表示にします。
  4. 補助関数
    • HideAllPanels():すべてのガイドパネルを非表示にする
    • IsGuideOpen():特定パネルが開かれているか確認する
    • IsAnyGuideOpen():何かのパネルが開いているか
    • GetCurrentActivePanelIndex():今開いているパネルがどれかを返す
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;

[System.Serializable]
public class GuideItem
{
    public string guideName; // ガイド名
    public Button guideButton; // ガイドボタン
    public GameObject guidePanel; // ガイドパネル
}

public class GuideManager : MonoBehaviour
{
    [Header("Guide Items")]
    public List<GuideItem> guideItems = new List<GuideItem>(); // ガイドアイテムのリスト
    
    private GameObject currentActivePanel; // 現在アクティブなパネル

    void Start()
    {
        InitializeGuideButtons();
        HideAllPanels();
    }

    // ガイドボタンの初期化
    private void InitializeGuideButtons()
    {
        for (int i = 0; i < guideItems.Count; i++)
        {
            int index = i; // クロージャーのためにローカル変数を作成
            if (guideItems[i].guideButton != null)
            {
                guideItems[i].guideButton.onClick.AddListener(() => ShowGuidePanel(index));
            }
        }
    }

    // ガイドパネルを表示
    public void ShowGuidePanel(int index)
    {
        if (index < 0 || index >= guideItems.Count)
        {
            Debug.LogWarning($"無効なガイドインデックス: {index}");
            return;
        }

        // 現在のパネルを非表示
        if (currentActivePanel != null)
        {
            currentActivePanel.SetActive(false);
        }

        // 選択されたパネルを表示
        if (guideItems[index].guidePanel != null)
        {
            guideItems[index].guidePanel.SetActive(true);
            currentActivePanel = guideItems[index].guidePanel;
            Debug.Log($"ガイドパネルを表示: {guideItems[index].guideName}");
        }
    }

    // すべてのパネルを非表示
    public void HideAllPanels()
    {
        foreach (var guideItem in guideItems)
        {
            if (guideItem.guidePanel != null)
            {
                guideItem.guidePanel.SetActive(false);
            }
        }
        currentActivePanel = null;
    }

    // ガイドパネル全体をリセット
    public void ResetGuidePanel()
    {
        HideAllPanels();
    }

    // 特定のガイドが開いているかチェック
    public bool IsGuideOpen(int index)
    {
        if (index < 0 || index >= guideItems.Count) return false;
        return currentActivePanel == guideItems[index].guidePanel;
    }

    // ガイドパネルが開いているかチェック
    public bool IsAnyGuideOpen()
    {
        return currentActivePanel != null;
    }

    // 現在アクティブなパネルのインデックスを取得
    public int GetCurrentActivePanelIndex()
    {
        for (int i = 0; i < guideItems.Count; i++)
        {
            if (currentActivePanel == guideItems[i].guidePanel)
            {
                return i;
            }
        }
        return -1;
    }
}

Unityでの設定

  1. 空の GameObject を作成し、GuideManager スクリプトをアタッチ
  2. Inspector で guideItems に5つ分の要素を登録(ボタン、パネル、名前)
  3. UIに配置したボタンやパネルを、それぞれ対応するフィールドにドラッグ&ドロップ

設定は少し手間ですが、再利用性が高く、ガイド内容の追加・変更も容易です。

動作確認

ガイドタブを開くと基本、戦闘、強化、AF、転生ボタンがあるのでクリックするとそれぞれのガイドパネルが開きます。

以下は強化ガイドパネルと転生ガイドパネルを開いた例です。

期待通りの動作を実装することができました!

まとめ

今回のガイド機能の実装によって、初めてこのゲームを遊ぶプレイヤーが、迷うことなく進められる設計が整いました。

初心者の離脱を防ぐという意味でも、このようなヘルプ要素は非常に重要です。今後はさらに説明内容を充実させ、画像付きガイド操作デモ動画へのリンクなども検討したいと考えています。

進捗

今回はメニューのガイド機能の追加をしました!

  • (済)オート戦闘:ボタン操作なしでもバトルが進むようにする。
  • (済)オートスキル発動:スキルも自動で発動する機能。
  • (済)UIのブラッシュアップ:デザインとレイアウトを整えて見やすくする。
  • (済)ステージ数の拡充(最低20):遊びごたえを高めるためにボリュームアップ。
  • 復活機能(広告視聴):ゲームオーバー時、広告視聴で復活できる仕組み。
  • 広告報酬でダイヤ獲得:無課金でもダイヤが手に入る仕組み。
  • (済)G強化・アーティファクト・転生の拡張:各システムにさらなる深みを持たせる。
  • (済)回復薬の追加:ステージを進めやすくする。
  • アニメーションの追加:ゲーム画面にもっと動きを持たせる。
  • (済)レアモンスターの追加:わくわく感を追加する。
  • 放置要素の追加:プレイしていない時間も強くなる。
  • (済)メニューの内容追加:ストーリー、記録、ガイドなどプレイヤーが遊びやすくする。

次回予告

次は「攻撃時のエフェクト」を実装予定です!

戦闘がより派手になり、プレイヤーの没入感を高めることができるはず。特に会心の一撃などは、視覚的な演出があると爽快感が段違いなので、しっかり盛り込んでいきたいです!

どうぞお楽しみに!

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