ふりかえり
前回はデスペナルティを実装し、バトルに緊張感が加わりました!
スキル解放機能を実装!
今回は、いよいよスキルの解放機能に取り組みます!
現在は、ゲーム開始時から全スキルが使える状態。それでは成長の楽しさが薄れてしまいます。
そこでモンスターを倒して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を消費してどんどん強くなる――そんなシステムにしていきます!