前提・実現したいこと
PlayerがEnemyを攻撃してEnemyのHpTextに反映させて減らせるようにしたいです。
発生している問題・エラーメッセージ
2Dのターン制ゲームを作ろうと思っておりScriptableObjectを使用してEnemyを作成しました。
EnemyにステータスをつけTextに反映させる事が出来たので攻撃を実装しようとしたのですがPlayerが攻撃した際に
NullReferenceException: Object reference not set to an instance of an object
PlayerManager.Attack (EnemyStatus enemy) (at Assets/PlayerManager.cs:14)
BattleManager.Attack () (at Assets/BattleManager.cs:19)
と表示されエラーになってしまいます。
利用環境は最新のUnityです。
PlayerManager = プレイヤーのHPなど
Enemy = EnemyのUI(HpTextなど)
EnemyStatusData = EnemyStatusDataクラスのScriptableObject
EnemyStatus = EnemyStatusDataクラスの中のEnemyStatusクラス
該当のソースコード
using UnityEngine; public class BattleManager : MonoBehaviour { public PlayerManager player; public Enemy enemy; EnemyStatus enemyStatus; void Start() { enemy.SetUpUI(enemyStatus); } public void Attack() { int damage = player.Attack(enemyStatus); ←エラーが出ている箇所 enemy.SetUpUI(enemyStatus); } } /////////////////////////////////////////// public class PlayerManager : MonoBehaviour { public int maxhp; public int hp; public int at; public int Attack(EnemyStatus enemy) { int damage = enemy.Damage(at); ←エラーが出ている箇所 return damage; } public int Damage(int damage) { hp -= damage; return damage; } }
試したこと
正直色々とやりすぎて訳がわからなくなってしまいました。
補足情報(FW/ツールのバージョンなど)
プログラミング初心者なので、これを勉強すれば改善出来る事などあればそういうでもいいので教えていただけたらと思います。
よろしくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/28 08:50
2020/07/28 09:00 編集