問題点
以下のようにPlayer.csにて参照させるためのAddExp関数を用意しました。
実際に、Enemy側にAddExpを使い体力が0になったら経験値がPlayer側に入るというようなものを実装しようとしました。が、取得の処理がなされず、Destroyもされない状況になりました。
また、NeedExpの処理に関しても、Inspector側で設定した後、Playすると0になってしまう原因も何故か理解できていない状況です。
この場合はどのようにすれば良いのでしょうか・・・?
c#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Player : MonoBehaviour { 6 7 public int m_nextExpBase; // 次のレベルまでに必要な経験値の基本値 8 public int m_nextExpInterval; // 次のレベルまでに必要な経験値の増加値 9 public int Level; //現Playerレベル確認用変数 10 public int Exp; 11 public int NeedExp; //次経験値取得必要数確認用変数 12 13 private void Awake() 14 { 15 NeedExp = GetNeedExp(1); // 次のレベルに必要な経験値 16 17 } 18 19 //敵を倒したときに経験値を増やす関数 20 public void AddExp(int exp) 21 { 22 //経験値取得処理 23 Exp = Exp + exp; 24 //経験値が足りていない場合、処理を中断 25 if (Exp < NeedExp) return; 26 //レベルアップ 27 Level++; 28 NeedExp = GetNeedExp(Level); 29 } 30 //経験値取得量設定用関数 31 private int GetNeedExp(int level) 32 { 33 return m_nextExpBase + m_nextExpInterval * ((level - 1) * (level - 1)); 34 35 } 36}
c#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5 6public class Enemy : MonoBehaviour { 7 8 public int EnemyHP; 9 public int EnemyEXP; 10 11 void Update () { 12 if(EnemyHP == 0) 13 { 14 var Player = GetComponent<Player>(); 15 audiosource.PlayOneShot(Destroysound); 16 Player.AddExp(EnemyEXP); 17 Destroy(gameObject); 18 } 19 } 20}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/20 21:58
2018/06/21 00:40