質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1997閲覧

( Unity)C#のJSONでセーブしたデータを反映させたいです。

sho0

総合スコア6

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/05/13 04:43

前提・実現したいこと

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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

■1つ目のエラー
PlayerクラスはPlayerという変数を持っていません。
this.Player.hp = SaveSystem.Instance.UserData.ihp;
なので上記部分がエラーになります。
どういう意図があってこうしているのか分かりませんが、直後にhp = maxHp;とあるので
maxHp = SaveSystem.Instance.UserData.ihp;でしょうか?

■2個目のエラー
同じくPlayerクラスはihpという変数を持っていません。
HPSlider.maxValue = ihp;
なので上記部分がエラーになります。
HPSlider.maxValue = SaveSystem.Instance.UserData.ihp;
こうしたかったのでしょうか?

投稿2020/05/13 07:42

sakura_hana

総合スコア11427

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sho0

2020/05/13 11:30

ご認識の通りです。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問