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



