前提・実現したいこと
JSONでセーブしたデータを反映させたい。
発生している問題・エラーメッセージ
セーブまでは恐らくできているんですが、HPSlider(Slider)への反映の仕方がわかりません。
Assets/Player.cs(27,10): error CS1061: 'Player' does not contain a definition for 'Player' and no accessible extension method 'Player' accepting a first argument of type 'Player' could be found (are you missing a using directive or an assembly reference?)
発生している問題・エラーメッセージ
Assets/Player.cs(29,25): error CS0103: The name 'ihp' does not exist in the current context
該当のソースコード
UserData
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5namespace WBMap 6{ 7 [System.Serializable] 8public class UserData 9{ 10 public Vector3 Pos = Vector3.zero; 11 public int ihp = 100; 12} 13}
該当のソースコード
Player
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.EventSystems; 5using UnityEngine.UI; 6 7namespace WBMap{ 8 9public class Player : MonoBehaviour,IPointerClickHandler,IDropHandler 10{ 11public Slider HPSlider; 12 13 private List<Item> items = new List<Item>(); 14 15 [SerializeField] 16 public int atk; 17 18 [SerializeField] 19 public int maxHp; 20 21 public int hp; 22 23 private Hand hand; 24 25 private void Start() 26 { 27 this.Player.hp = SaveSystem.Instance.UserData.ihp; 28 hp = maxHp; 29 HPSlider.maxValue = ihp; 30 HPSlider.value = maxHp; 31 hand = FindObjectOfType<Hand>(); 32 } 33 34 [SerializeField] 35 private int speed; 36 37 public int MyHp 38 { 39 get 40 { 41 return hp; 42 } 43 private set 44 { 45 hp = value; 46 } 47 } 48 49 // 持っているスキル 50[SerializeField] 51private List<Skill> skillList = null; 52 53public void SetSkillList(List<Skill> skillList) { 54 this.skillList = skillList; 55} 56 57public List<Skill> GetSkillList() { 58 return skillList; 59} 60 61 public void ChangeHp(int delta) 62 { 63 int testHp = MyHp + delta; 64 if (testHp <= 0) MyHp = 0; 65 else if (testHp>maxHp) MyHp = maxHp; 66 else MyHp = testHp; 67 68 Debug.Log("現在のHPは" + MyHp + "です"); 69 } 70 71 public int MyAtk 72 { 73 get 74 { 75 int itemAtk = 0; 76 77 foreach (Item item in MyItems) 78 { 79 Armor armor = item as Armor; 80 81 82 if(armor != null) itemAtk += armor.MyAtk; 83 } 84 85 86 return atk + itemAtk; 87 } 88 } 89 90 91 public int MySpeed 92 { 93 get 94 { 95 return speed; 96 } 97 private set 98 { 99 speed = value; 100 } 101 } 102 103 public List<Item> MyItems {get => items; private set =>items = value; } 104 105 public void OnPointerClick(PointerEventData eventData) 106 { 107 Debug.Log("攻撃力は" +MyAtk + "です"); 108 Debug.Log("所持アイテムは" + MyItems.Count + "です"); 109 } 110 111 public void SetItem(Item item) 112 { 113 if(item!=null) MyItems.Add(item); 114 115 } 116 117 public void Removeitem(Item item) 118 { 119 if (item != null) MyItems.Remove(item); 120 } 121 122 public void OnDrop(PointerEventData eventData) 123 { 124 Item gotItem = hand.GetGrabbingItem(); 125 126 Food food = gotItem as Food; 127 128 if(food != null) food.Eat(this); 129 130 else hand.SetGrabbingItem(gotItem); 131 } 132 133 public void OnDamage(int _damage) 134 { 135 hp -= _damage; 136 if(hp <= 0) 137 { 138 hp = 0; 139 } 140 HPSlider.value = hp; 141 } 142} 143} 144
該当のソースコード
Batlle
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.SceneManagement; 5 6namespace WBMap{ 7 8public class Batlle : MonoBehaviour { 9 10 public Player Player; 11 public Enemy doragonPrefab; 12 13 private SaveSystem System => SaveSystem.Instance; 14 15 private UserData Data => System.UserData; 16 17 18 float second = 0f; 19 bool IsPlayerTurn; 20 bool IsGameOver; 21 bool IsGamekuria; 22 23 void Start() 24 { 25 IsPlayerTurn = true; 26 IsGameOver = false; 27 IsGamekuria = false; 28 } 29 30 31 32 void Update () 33 { 34 if(IsGamekuria) 35 { 36 Data.ihp = Player.hp; 37 SaveSystem.Instance.Save(); 38 39 40 SceneManager.LoadScene("main6"); 41 } 42 43 if(IsGameOver) 44 { 45 SceneManager.LoadScene("sentakuGameover"); 46 } 47 48 if(!IsPlayerTurn) 49 { 50 second += Time.deltaTime; 51 if(second >= 1f) 52 { 53 second = 0; 54 IsPlayerTurn = true; 55 Player.OnDamage(doragonPrefab.atk); 56 } 57 if(Player.hp == 0) 58 { 59 IsGameOver = true; 60 } 61 if(doragonPrefab.hp == 0) 62 { 63 IsGamekuria = true; 64 } 65 } 66 } 67 68 69 70 public void PushAttackButton() 71 { 72 doragonPrefab.OnDamage(Player.atk); 73 IsPlayerTurn = false; 74 } 75} 76} 77
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/13 11:30