제이슨의 데이터를 가져오는 것은 성공하고

UI를 만들었으나 TMP_Text에 아이디를 가져오는 와중에

Null이 나왔는데 어찌저찌 만지다 보니 해결은 되었지만,

개운하지 않은 이 찝찝한 기분..

 

using Newtonsoft.Json;
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;

public class SkillManager : MonoBehaviour
{
    public static SkillManager instance; //싱글톤
    public Button levelUpBtn;
    public Button closeBtn;
    public GameObject selectSkillPopUp;
    public SkillData[] skillDatas;
    private void Awake() //싱글톤
    {
        if(instance == null)
        {
            instance = this;
            DontDestroyOnLoad(gameObject);
        }else if(instance != null)
        {
            Destroy(this.gameObject);
        }
    }

    //public static SkillManager Instance
    //{
    //    get
    //    {
    //        if (null == instance)
    //        {
    //            return null;
    //        }
    //        return instance;
    //    }
    //}


    public void Start()
    {
        OnClickLevelUpBtn();
        OnClickCloseBtn();
        TextAsset asset = Resources.Load<TextAsset>("data/skills_data");
        string json = asset.text;

        Debug.Log(json);

        skillDatas = JsonConvert.DeserializeObject<SkillData[]>(json);
        foreach (SkillData data in skillDatas)
        {
            Debug.Log(data.id);
            //문자열 => 객체 (역직렬화) 각 객체를 돌며 id를 잘 찾는지 확인
        }
    }


    public SkillData GetDataById(int id)
    {
        SkillData foundSkillData = null;
        for(int i = 0; i < skillDatas.Length; i++)
        {
            SkillData skillData = this.skillDatas[i];
            if(skillData.id == id)
            {
                foundSkillData = skillData;
                break;
            }
        }
        return foundSkillData;
    }


    public void OnClickLevelUpBtn()
    {
        levelUpBtn.onClick.AddListener(() =>
        {
            selectSkillPopUp.SetActive(true);
        });

    }


    public void OnClickCloseBtn()
    {
        closeBtn.onClick.AddListener(() =>
        {
            selectSkillPopUp.SetActive(false);
        });
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SkillData
{
    public int id;
    public string name;
    public string sprite_name;
    public string desc;
}

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class SelectSkillPopUp : MonoBehaviour
{
    public TMP_Text skillId;
    void Start()
    {
        skillId.text = SkillManager.instance.GetDataById(103).id.ToString();
    }

}

+ Recent posts