https://docs.unity3d.com/560/Documentation/ScriptReference/UI.Slider-onValueChanged.html

 

Unity - Scripting API: UI.Slider.onValueChanged

Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. Close

docs.unity3d.com

 

'Study > ' 카테고리의 다른 글

[Tip] Object.FindObjectOfType  (0) 2024.06.11
[Tip] RenderSettings  (0) 2024.06.05
[Tip] 3D 프로젝트에서 SpriteAtals 패킹하는 법  (0) 2024.05.23
[Tip] 패키지에서 프리팹찾기  (0) 2024.04.18
[Tip] CameraShaker  (0) 2024.03.29

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

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();
    }

}

using Newtonsoft.Json;
using System.Collections;
using System.Collections.Generic;
using System.Dynamic;
using Unity.VisualScripting;
using Unity.VisualScripting.Antlr3.Runtime.Tree;
using UnityEngine;
using UnityEngine.U2D;
using UnityEngine.UI;

public class Main : MonoBehaviour
{
    private Main() { }
    private static Main instance;
    public static Main Instance
    {
        get
        {
            // 인스턴스가 null인 경우 새로 생성
            if (instance == null)
            {
                instance = new Main();
                // 기존의 Start 메서드 내용을 Init 메서드로 옮김
                instance.Init();
            }
            return instance;
        }
    }

    public SpriteAtlas equipmentAtlas;
    [SerializeField] private Image weapon;
    [SerializeField] private Image armor;
    [SerializeField] private Image helmet;
    [SerializeField] private Image shield;
    [SerializeField] private Image accessaries;

    public EquipmentData[] equipmentDatas;
    private int id;

    void Init()
    {
        TextAsset asset = Resources.Load<TextAsset>("data/equipment_data");
        string json = asset.text;
        //Debug.Log(json);

        //현재 문자열을 객체로 역직렬화
        equipmentDatas = JsonConvert.DeserializeObject < EquipmentData[] >(json);

        EquipmentData foundData = this.GetDataById(1002);
        //foreach (EquipmentData equipment in equipmentDatas)
        //{
        //JSON 데이터에서 해당 필드가 비어있거나 값이 없다면, 해당 필드는 역직렬화될 때 0으로 초기화
        //Debug.LogFormat("{0}, {1}, {2}, {3}, {4}", equipment.id, equipment.name, equipment.type, equipment.damage, equipment.defense);
        //}
        Debug.LogFormat("{0}, {1}, {2}, {3}", foundData.id, foundData.name, foundData.type, foundData.defense);

    }

    public EquipmentData GetDataById(int id)
    {
        EquipmentData foundData = null;
        this.id = id;
        for(int i = 0; i < this.equipmentDatas.Length; i++)
        {
            EquipmentData equipmentData = this.equipmentDatas[i];
            if(equipmentData.id == id)
            {
                foundData = equipmentData;
                break;
            }
        }
        return foundData;
    }

    public Sprite GetSpriteImg(string imgName)
    {
        EquipmentData equipmentData = null;
        foreach (var data in equipmentDatas)
        {
            if (data.name == imgName)
            {
                equipmentData = data;
                break;
            }
        }

        if (equipmentData != null)
        {
            string imagePath = "img/" + equipmentData.name;
            Sprite sprite = Resources.Load<Sprite>(imagePath);
            return sprite;
        }
        else
        {
            Debug.LogError("Equipment data with name " + imgName + " not found.");
            return null;
        }
    }

    public void LoadAndSetImage(Image imageComponent, string imgName)
    {
        Sprite sprite = GetSpriteImg(imgName);
        if (sprite != null)
        {
            imageComponent.sprite = sprite;
        }
    }

}

 

using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;

public class Weapon : MonoBehaviour
{
    public TMP_Text idText;
    public Image weaponImg;
    private void Start()
    {
        //Sprite weaponSprite = Main.Instance.equipmentAtlas.GetSprite("weaponA");
        //weaponImg.sprite = weaponSprite;

        //Sprite sprite = Resources.Load<Sprite>("img/weaponA");
        //weaponImg.sprite = sprite;

        Main.Instance.LoadAndSetImage(weaponImg, "weaponA");

        //weaponImg = 
        idText.text = Main.Instance.GetDataById(1000).id.ToString();
    }
}

 

using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;


public class Shield : MonoBehaviour
{
    public TMP_Text idText;
    public Image shieldImg;

    private void Start()
    {
        Main.Instance.LoadAndSetImage(shieldImg, "shieldA");
        idText.text = Main.Instance.GetDataById(1001).id.ToString();
    }
}

 

using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;


public class Armor : MonoBehaviour
{
    public TMP_Text idText;
    public Image armorImg;


    private void Start()
    {
        Main.Instance.LoadAndSetImage(armorImg, "armorA");
        idText.text = Main.Instance.GetDataById(1003).id.ToString();
    }

}

 

using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;

public class Accessaries : MonoBehaviour
{
    public TMP_Text idText;
    public Image accessoryImg;

    private void Start()
    {
        Main.Instance.LoadAndSetImage(accessoryImg, "accessoryA");
        idText.text = Main.Instance.GetDataById(1004).id.ToString();
    }
}

 

using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class Helmet : MonoBehaviour
{
    public TMP_Text idText;
    public Image helmetImg;
    private void Start()
    {
        Main.Instance.LoadAndSetImage(helmetImg, "helmetA");
        idText.text = Main.Instance.GetDataById(1002).id.ToString();
    }
}

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EquipmentData
{
    public int id;
    public string name;
    public string type;
    public int damage;
    public int defense;
}

+ Recent posts