Scroll View 동적생성

Unity/수업내용 2019. 5. 28. 09:48


UGUI를 이용, json 파일을 통해서 scroll view의 항목들을 동적으로 생성해보았다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.U2D;
 
public class TestUGUI : MonoBehaviour
{
    public SpriteAtlas atlas;
    public RectTransform contents;
    public MissionListItem listItemPrefab;
    private DataManager dm;
 
    void Start()
    {
 
        this.dm = DataManager.GetInstance();
        dm.LoadData<mission_data>("Data/mission_data");
        dm.LoadData<reward_data>("Data/reward_data");
 
        var mission0 = dm.GetData<mission_data>(0);
        Debug.LogFormat(mission0.sprite_name);
 
        dm.GetCount();
        this.CreateListItem();
    }
 
    private void CreateListItem()
    {
        for (int i = 0; i<5; i++)
        {
            var data = this.dm.GetData<mission_data>(i);
            var listItemGo = Instantiate(this.listItemPrefab);
 
            var script = listItemGo.GetComponent<MissionListItem>();
            script.Init(data.id, this.dm.GetData<reward_data>(data.reward_id).sprite_name, data.sprite_name, data.reward_val, data.mission_name, data.goal_val,
                    this.dm.GetData<reward_data>(data.reward_id).hex_color);
        }
    }
}
 
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.U2D;
 
public class MissionListItem : MonoBehaviour
{
    public int id;
    public Image rewardIcon, Thumb;
    public Image[] Stars;
    public Text rewardText, MissionName;
    public GameObject bg;
    public Button claim;
 
    public void Init(int id, string rewardIcon, string Thumb, int rewardText, string MissionName, int goalValue, string hex_color)
    {
        this.Claim();
        this.gameObject.transform.SetParent(GameObject.Find("Contents").transform);
        var atlas = GameObject.FindObjectOfType<TestUGUI>().atlas;
        this.bg.SetActive(false);
        this.id = id;
        this.rewardIcon.sprite = atlas.GetSprite(rewardIcon);
        this.Thumb.sprite = atlas.GetSprite(Thumb);
        this.rewardText.text = rewardText.ToString();
        Color color;
        ColorUtility.TryParseHtmlString(hex_color, out color);
        this.rewardText.color = color;
        this.MissionName.text = string.Format(MissionName,goalValue.ToString());
    }
 
    private void Claim()
    {
        this.claim.onClick.AddListener(() =>
        {
            var dm = DataManager.GetInstance();
            Debug.LogFormat("id : {0}, reward : {1}, reward_Value : {2}"this.id, this.rewardIcon.name, this.rewardText.text);
        });
    }
}
 
cs




1
2
3
4
5
6
7
8
9
10
 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class RawData
{
    public int id;
}
 
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class mission_data : RawData
{
    public string sprite_name;
    public string mission_name;
    public int goal_val;
    public int reward_id;
    public int reward_val;
}
 
cs

1
2
3
4
5
6
7
8
9
10
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class reward_data : RawData
{
    public string sprite_name;
    public string hex_color;
}
 
cs


: