29歩目 スキル解放機能を実装! Unityで1日1ステップ!ノンフィールドRPG開発日記

1日1歩開発日記

ふりかえり

前回はデスペナルティを実装し、バトルに緊張感が加わりました!

スキル解放機能を実装!

今回は、いよいよスキルの解放機能に取り組みます!

現在は、ゲーム開始時から全スキルが使える状態。それでは成長の楽しさが薄れてしまいます。

そこでモンスターを倒してG(ゴールド)を貯めて新スキルを解放という育成サイクルを実装します!

スクリプトの変更

SkillManagerでスキルを解放する処理を追加します

    // 指定したスキルが解放されているかどうか
    public bool IsSkillUnlocked(int skillIndex)
    {
        if (skillIndex < 0 || skillIndex >= skills.Count) return false;
        return skills[skillIndex].isUnlocked;
    }

    // 指定したスキルを解放
    public bool UnlockSkill(int skillIndex, PlayerManager playerManager)
    {
        if (skillIndex < 0 || skillIndex >= skills.Count) return false;
        if (skills[skillIndex].isUnlocked) return false; // 既に解放済み
        
        if (playerManager.player.gold >= skills[skillIndex].unlockCost)
        {
            playerManager.player.gold -= skills[skillIndex].unlockCost;
            skills[skillIndex].isUnlocked = true;
            return true;
        }
        
        return false;
    }

PowerUpManagerでボタンを押した時にスキルを解放できるか判別します

    // 全力攻撃スキルを解放
    public void UnlockPowerAttack()
    {
        if (skillManager == null) return;
        
        if (skillManager.UnlockSkill(1, playerManager)) // インデックス1は全力攻撃
        {
            ShowMessage("全力攻撃スキルを解放しました!");
        }
        else
        {
            ShowMessage("ゴールドが足りません。");
        }
        playerManager.playerUIManager.UpdateUI();
        UpdateUI();
    }

    // ヒーリングスキルを解放
    public void UnlockHealing()
    {
        if (skillManager == null) return;
        
        if (skillManager.UnlockSkill(2, playerManager)) // インデックス2はヒーリング
        {
            ShowMessage("ヒーリングスキルを解放しました!");
        }
        else
        {
            ShowMessage("ゴールドが足りません。");
        }
        playerManager.playerUIManager.UpdateUI();
        UpdateUI();
    }

    // 強撃スキルを解放
    public void UnlockStrongAttack()
    {
        if (skillManager == null) return;
        
        if (skillManager.UnlockSkill(0, playerManager)) // インデックス0は強撃
        {
            ShowMessage("強撃スキルを解放しました!");
        }
        else
        {
            ShowMessage("ゴールドが足りません。");
        }
        playerManager.playerUIManager.UpdateUI();
        UpdateUI();
    }

Unityでの設定

  • PowerUpManager にスキル解放用のUIを作成
  • 各スキルごとに解放ボタンとステータス表示を設置し、インスペクターで紐づけ

動作確認

  • 「未解放」と表示されたスキルの横のボタンをクリック!
  • 赤文字の“未解放”が緑の“解放済み”に!
  • スキルボタンが使用可能になりました!

まとめ

今回はスキル解放機能を実装しました!

これにより:

  • 敵を倒してゴールドを稼ぐ
  • ゴールドでスキルを解放
  • 強いスキルでさらに強敵を倒す!

という楽しい強化サイクルが誕生!

次回予告

次回はスキル強化機能を実装!

Gを消費してどんどん強くなる――そんなシステムにしていきます!

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