ふりかえり
前回は、プレイヤーや敵が倒されたあと自動でリスポーンする仕組みを実装しました。これでバトルが途切れず続くようになり、よりRPGらしくなってきました!
敵を倒したらEXPとGを獲得!
今回は「敵を倒したときにプレイヤーが経験値(EXP)とお金(G)を獲得できるようにする」仕組みを実装します。
実装手順
① PlayerData.csにEXPとGのフィールドを追加
[System.Serializable] public class PlayerData { public string name; public int level; public int maxHP; public int currentHP; public int attack; public int defense; public int exp; public int gold; }
② EnemyData.csに報酬用のEXPとGを追加
[System.Serializable] public class EnemyData { public string name; public int level; public int maxHP; public int currentHP; public int attack; public int defense; public int expReward; public int goldReward; }
③ EnemyManager.csのTakeDamage()に報酬処理を追加
public void TakeDamage(int damage) { enemy.currentHP -= damage; if (enemy.currentHP <= 0) { enemy.currentHP = 0; Debug.Log($"{enemy.name}を倒した!"); // プレイヤーにEXPとGを与える if (playerManager != null) { playerManager.GainRewards(enemy.expReward, enemy.goldReward); } SpawnEnemy(); // 新しい敵を生成 } }
④ PlayerManager.csに報酬獲得メソッドを追加
public void GainRewards(int exp, int gold) { player.exp += exp; player.gold += gold; Debug.Log($"{player.name}は{exp}EXPと{gold}Gを獲得しました!"); }
⑤ PlayerUIManager.csでEXPとGを表示
public class PlayerUIManager : MonoBehaviour { public PlayerManager playerManager; public TextMeshProUGUI nameText; public TextMeshProUGUI hpText; public TextMeshProUGUI levelText; public TextMeshProUGUI expText; public TextMeshProUGUI goldText; void Update() { UpdateUI(); } void UpdateUI() { nameText.text = playerManager.player.name; hpText.text = $"HP: {playerManager.player.currentHP}/{playerManager.player.maxHP}"; levelText.text = $"Lv: {playerManager.player.level}"; expText.text = $"EXP: {playerManager.player.exp}"; goldText.text = $"G: {playerManager.player.gold}"; } public void OnAttackButtonClicked() { if (battleManager != null) { battleManager.PlayerAttack(); } else { Debug.LogError("BattleManager is not assigned."); } } }
Unity側の設定
- PlayerEXPTextとPlayerGoldTextをシーン上に作成し、UIとして配置します。
- PlayerUIManagerにそれぞれのTextをアタッチします。
- EnemyManagerのInspectorからPlayerManagerを紐付けます。
ゲーム起動時の動作
初期状態では「EXP: 0」「G: 0」と表示されます。

敵(スライム)を倒すと、ログに報酬獲得が表示され、UIにも即座に反映されます。


まとめ
今回は、敵を倒すと経験値とお金が手に入るという基本的なRPG要素を追加しました!
EXPやGがどんどん増えていくと、「もっと戦いたい!」という気持ちになりますね!
次回予告
いよいよ… プレイヤーのレベルアップ機能を実装します!
溜まったEXPで成長していくワクワクを、ぜひお楽しみに!
コメント