【Unity初心者】Unityでネットゲームを作りたい【2】Json取入

https://qiita.com/ysyss5500/items/4aeb23639a8cf3d67376


前回jsonファイル作成ソフト作成まで
なんかすげー遠回りしてるようだが、進んではいるはず

では、それを読み込まなければ、書き込んで変更できなければ！って事で再度ググってみます。そしてやっと気が付きます

### C＃、オブジェクト指向なんぞや？
と

色々見てまわりました
ん～なんとなく理解（できてない
今まで、順番にプログラムを書いてた者にとって、これはむずい
___
まずは<a href="https://janken.asotetu.work/c_start/">ノコノコさん</a>の所でC#のお勉強
これはわかりやすい！！でも、普通のプログラムとほぼ変わらんね
オブジェクト指向が理解できん
で、さらに検索した結果


**オブジェクト**　
もの？おおまかなくくり的な...

**クラス**
Geminiさんに聞いてみた
・クラス: オブジェクトの属性（変数）と動作（メソッド）を定義したテンプレートです。
・インスタンス: クラスに基づいてメモリ上に生成されたオブジェクトの実体です。
・インスタンス化: クラスからインスタンスを生成することです。
基本この呪文でわからなくなりますよね

    // 車のクラス
    public class Car
    {
        public string Color { get; set; }
        public string Maker { get; set; }
        public int Year { get; set; }

        public void Run()
        {
            Console.WriteLine("車が走ります");
        }
    }

    // インスタンスの生成
    Car myCar = new Car();
    myCar.Color = "赤";
    myCar.Maker = "トヨタ";
    myCar.Year = 2023;
    myCar.Run(); // 出力: 車が走ります
このコードでは、Car クラスから myCar というインスタンスを生成し、その色、メーカー、年式を設定しています。そして、Run メソッドを呼び出すことで、車が走る動作を実行しています。

これが一番わかりやすかった
クラス内に書かれた動作をメソッドと言うみたい

    public string Color { get; set; }

クラス外の　myCar.Color = "赤";　これで指定？入力？どう使うのか？

<br>

    public void Run()
        {
            Console.WriteLine("車が走ります");
        }

と

    Car myCar = new Car();
    myCar.Run(); // 出力: 車が走ります

これはなんとなく...
クラス内に記載した動作プログラムを他で使えるって事かな





<BR>
よくわからんが、とりあえず進んでみよう！（前向き

____
##### 本題　UnityでJsonを読込み使えるようにしたい

<a href="https://memonoana.hatenablog.com/entry/2019/05/22/005823">メモの穴</a>こちらでjsonを読み込む方法を参照しました
ちょいと、自分のJsonに合わせた形で作り変えてみる
Asset>Resources>Item.json

    {
    "item": [
      {"name":"速い","HP":"0","ST":"0","DE":"0","SP":"1"},
      {"name":"固い","HP":"0","ST":"0","DE":"1","SP":"0"}
      ]
    }
Itemallget.cs
```rd
using System;
using UnityEngine;

[Serializable]
public class InputJson
{
    public AAA[] item;
}

[Serializable]
public class AAA
{
    public string name;
    public string HP;
    public string ST;
    public string DE;
    public string SP;
}

public class ItemAllGet: MonoBehaviour
{
    void Start()
    {
        string inputString = Resources.Load<TextAsset>("ItemJson").ToString();
        InputJson inputJson = JsonUtility.FromJson<InputJson>(inputString);
        Debug.Log(inputJson.item[0].name);  // 速い
        Debug.Log(inputJson.item[1].DE);  // 1
    }
}
```
こちらは空のGameObjectに張り付けて使用します
するとAsset>Resources>Itemjsonを読み込み認識してくれます
itemという配列にname,HP...と書いてあるのを読み込んでitem[0]のnameは？と参照できるようになってます

```rd
using System;
using UnityEngine;
```
UnityEngineは必須なんだろねー
namespaseは無いのか

```rd
[Serializable]
public class InputJson
{
    public AAA[] item;
}
```
[Serializable]これを書くと「インスペクターに サブプロパティを埋め込むことができるようになります。」
ってよくわからんがまぁ次
InputJsonってクラス
ここで配列を指定してるみたいです
```rd
[Serializable]
public class AAA
{
    public string name;
    public string HP;
    public string ST;
    public string DE;
    public string SP;
}
```
ここで配列の中身を指定してるみたい
AAAクラス？さっきの配列のAAA[]とリンクしてる？
ならさっきのInputJsonクラスに一緒に書き込めないのか？
HPとかは数字だからintのがいいのか

    public class ItemAllGet: MonoBehaviour
    {
Unityに必須な書き方
クラス名はファイル名と同じでないとエラーが出る（大文字小文字まで判断）


```rd
    void Start()
    {
        string inputString = Resources.Load<TextAsset>("ItemJson").ToString();
        InputJson inputJson = JsonUtility.FromJson<InputJson>(inputString);
        Debug.Log(inputJson.item[0].name);  // 速い
        Debug.Log(inputJson.item[1].DE);  // 1
    }
```
Unityの動作コードはこのvoid start()に書き込むみたい

・string inputString = Resources.Load<TextAsset>("ItemJson").ToString();
inputStringって変数にResourcesフォルダーの中のItemjsonを読み込めって事かな

・InputJson inputJson = JsonUtility.FromJson<InputJson>(inputString);
初見はこれが謎でした
大文字のInputJson、小文字のinputJsonで＝？？？と
勉強したので↓
InputJsonクラスからinputJsonというインスタンスを生成？（むー....
さっきの変数inputStringのJson形式をinputJson配列にここで使える配列型に書きますよって事かな

でinputJson.item[0].nameと指定する

ﾌﾑﾌﾑなんとなく理解できた気がします
勉強した甲斐あった
何も理解せずにコピペで済ませてたら、先で躓くしね

まぁこれでjson読み込める

_____

Unityでは、基本的なデータ読み込みとかを空のGameObjectにクラスを配置して、画面に配置した画像、ボタン、テキスト等に個別に動作の仕方を.csにて配置すれば動く（表示とか画面移動）

画像（ボタン）をタップしたら、戦闘画面に切り替わって戦闘して結果データをjsonファイルに記載して、メイン画面戻ったら再度データ読み込みして表示ってのが出来るんでないかと考察

←前  [【Unity初心者】Unityでネットゲームを作りたい【1】色々悩む～ExcelでJsonの配列を作る](https://qiita.com/ysyss5500/items/f0950bc3f153f9947e7b)
[【Unity初心者】Unityでネットゲームを作りたい【3】PlayFabログインと同時にやりたい](https://qiita.com/ysyss5500/items/1338d95f2774e247478a)　次→


https://qiita.com/ysyss5500/items/4aeb23639a8cf3d67376