【Unity初心者】Unityでネットゲームを作りたい【12】所持しているアニメ画像を指定の場所に表示したい

https://qiita.com/ysyss5500/items/4aeb23639a8cf3d67376
### 所持しているアニメ画像を指定の場所に表示したい
どうしてもCanvasにimageを作ってそこに表示する方法ばっかで、せっかくアニメになってるのにimageに乗せると（アタッチ？）アニメにならないか表示されない
うーんどうにかならんかと色々またまたネットで検索しまくり
[【Unity】スクリプトからのオブジェクト表示・非表示、見かけ上の表示・非表示](https://qiita.com/Maru60014236/items/d542764af1c30c742d9f)こちらでオブジェの表示非表示の切り替えを発見

・オブジェクト非表示
```
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class test : MonoBehaviour
{
    [SerializeField] private GameObject a;//GameObject型の変数aを宣言　好きなゲームオブジェクトをアタッチ
 
    void Start()
    {
        a.SetActive(false);
    }
}
```
trueとfalseで表示非表示が切り替えられそう
これならドラッグアンドドロップした画像もなんとかなるかな？
挑戦
モンスタアニメを用意
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3979014/d317ff5a-fd96-6449-86e6-befdb2c84a3d.png)
後で選択とかしやすいように名前を数字に変更
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3979014/b71259e2-a309-1d10-9392-fd177f85e6d7.png)

スクリプト書いて
```
using UnityEngine;

public class TestT : MonoBehaviour
{        
    private string bbb = "0"; 

    //[SerializeField] private GameObject a;//GameObject型の変数aを宣言　好きなゲームオブジェクトをアタッチ
    void Start()
    {
    GameObject a = GameObject.Find(bbb);
    // コンポーネントの取得
    a.SetActive(false);
    }
}
```
後で変数で選択できるように、変数bbbにして確認
Mo1に放り込む
実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3979014/c1cf13d8-d165-405b-883f-6a38965baa01.png)
消えた！！

でも、オブジェクトを探すときに数字の　0　(　a=0　）では無理だった...
文字列（string）じゃないとダメ （a="0")
forとか繰り返し使いたいから文字列に変更か
___
### 数字を文字列に変更
C#の変更のやつを試したけどエラー
Unityだと使えないらしい
Console.WriteLine(num.ToString());こんな感じの命令文はエラーになる、で
[【Unity】文字列stringの関数まとめ](https://squmarigames.com/2018/11/18/unity-string-summary/)こちらを参照
```
int num = 123;
string character = num.ToString();
```
これで変わるらしい

やってみる
まず、PlayerのステータスJsonにMoNo（モンスターナンバーとした）に文字列で番号を追加した
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3979014/ee209ae5-39d1-02b6-a9c2-964879d9ee51.png)
\"MoNo\":\"0\"　この部分を追加
これで初期登録時に追加される（文字列なんで”0”とした）
Json読み込んだ後　playermons.pmon[0].MoNo　で参照できるはず

モンスター画像と登録しているモンスターナンバーが一致だとtrueじゃないとfalseで、同じ場所に設置した画像の表示非表示をやってみる
```
        //所持モンスターのJsonを読込
        string inputString = Resources.Load<TextAsset>("playermons").ToString();
        Pmon playermons = JsonUtility.FromJson<Pmon>(inputString);

        //一致したらtrueにして表示、それ以外はfalseで非表示
        for (int i = 0; i < 4; ++i)
        {
            string cha = i.ToString();
            if (playermons.pmon[0].MoNo == cha)
            {
                GameObject a = GameObject.Find(cha);
                a.SetActive(true);
            }
            else
            {
                GameObject a = GameObject.Find(cha);
                a.SetActive(false);
            }
        }
```
ちなみに１匹目だけね
今回の登録モンスターアニメは４匹（0～3）だから i<4
string cha = i.ToString();　ここでiを文字列に変更してchaに入れる
if (playermons.pmon[0].MoNo == cha)　モンスタナンバーと同じかどうか判断

やる前はこうやって同じ場所に重ねてる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3979014/19dc17d0-e994-38f2-91a6-7aa842db0a6d.png)
わかりずらいｗ
で、実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3979014/ba634eef-5fa9-f97d-6495-1e30cd214159.png)
指定のモンスター（０）だけのアニメが表示された！！成功
これを５匹所持するから、５回繰り返ししなきゃだけど、２匹目とかは考えなきゃだね～

今回追加したのはこれ
```
using UnityEngine;
using static PlayFabLogin;

public class MoC : MonoBehaviour
{
    void Start()
    {
        //新規の場合Json書込んでから読込みたいので起動を遅らせる
        Invoke("Mo0", 1.5f);
    }
        void Mo0()
    {
        //所持モンスターのJsonを読込
        string inputString = Resources.Load<TextAsset>("playermons").ToString();
        Pmon playermons = JsonUtility.FromJson<Pmon>(inputString);

        //一致したらtrueにして表示、それ以外はfalseで非表示
        for (int i = 0; i < 4; ++i)
        {
            string cha = i.ToString();
            if (playermons.pmon[0].MoNo == cha)
            {
                GameObject a = GameObject.Find(cha);
                a.SetActive(true);
            }
            else
            {
                GameObject a = GameObject.Find(cha);
                a.SetActive(false);
            }
        }

    }
}
```
       string inputString = Resources.Load<TextAsset>("playermons").ToString();
    　　Pmon playermons = JsonUtility.FromJson<Pmon>(inputString);
Jsonを読み込むこれを追加しただけで
勝手に　using static PlayFabLogin;　が追加された
マイクロソフトビジュアルスタジオすごい

今後

まず全部のモンスターアニメを同じところに設置して...
選択して表示非表示
を、全部の枠に設置して...同じ名前だとかぶるから、全部名前を変えて...
めんどいけどやっとけば、戦闘とかにも使えるのかな
ステータスもすべてにText設定して表示しなきゃだし
めんどいｗ

htmlのが表示は楽だけど、こっちのほうが選択は増えるし、ゲームとしては完成度上がる
その分やる事が増えるけど
プログラマーさんには頭上がらんね

←前  [【Unity初心者】Unityでネットゲームを作りたい【11】ゲームビュー、シミュレータ機種によって表示がずれる～画面の大きさ～カメラの関係（表示したい画像が出ない）](https://qiita.com/ysyss5500/items/c09371a206c91413d19a)

[【Unity初心者】Unityでネットゲームを作りたい【13】ひたすらアニメーション画像貼り付け～ビルドしてスマホに表示してみる](https://qiita.com/ysyss5500/items/53e8415fa07b638d1341)　次→




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