수동으로 스크롤뷰 만들기
유니티 화면 1-1
유니티 화면 1-2
동적으로 스크롤뷰 만들기
유니티 화면 1-1 ListItem_Mission
유니티 화면 2-1 SampleScene
소스코드
App.class
더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class App : MonoBehaviour
{
public UIApp uIApp;
// Start is called before the first frame update
void Start()
{
uIApp.Init();
}
// Update is called once per frame
void Update()
{
}
}
|
UIApp.class
더보기
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
42
43
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;
using UnityEngine.AI;
using System.Linq;
public class UIApp : MonoBehaviour
{
public Transform contents;
private GameObject listItemPrefab;
private Dictionary<int, MissionData> dicMissionDatas;
public void Init()
{
var ta = Resources.Load<TextAsset>("mission_data");
this.dicMissionDatas =
JsonConvert.DeserializeObject<MissionData[]>(ta.text).ToDictionary(x => x.id, x => x);
this.listItemPrefab =
Resources.Load<GameObject>("Prefabs/ListItem_Mission");
foreach (var data in this.dicMissionDatas.Values)
{
var listItemGo =
Instantiate<GameObject>(this.listItemPrefab);
var uiBinder = listItemGo.GetComponent<UIBinder_ListItem_Mission>();
uiBinder.onClickBtnReward = (id) =>
{
Debug.LogFormat("mission id: {0}", id);
var missionData = this.dicMissionDatas[id];
Debug.LogFormat("[reward] type: {0}, amount: {1}", missionData.reward_type, missionData.reward_amount);
};
var missionName = string.Format(data.name, data.goal);
uiBinder.Init(data.id, missionName);
listItemGo.transform.SetParent(contents, false);
}
}
}
|
UIBinder_ListItem_Mission.class
더보기
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
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
public class UIBinder_ListItem_Mission : MonoBehaviour
{
public Text textMissionName;
public Button btnGetReward;
public UnityAction<int> onClickBtnReward;
private int id; //mission id;
public void Init(int id,string missionName)
{
this.id = id;
this.textMissionName.text = missionName;
this.btnGetReward.onClick.AddListener(() =>
{
this.onClickBtnReward(this.id);
});
}
}
|
MissionData.class
더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MissionData
{
public int id;
public string name;
public int goal;
public string res_name;
public int reward_type;
public int reward_amount;
public bool btn_icon_type;
}
|
스크롤뷰 종료버튼있는 팝업창 만들기(생성과 동시에 초기화됨)
유니티화면 1-1
소스코드
App
더보기
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
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class App : MonoBehaviour
{
public UIApp uiApp;
private GameObject uiMissionPrefab;
private UIMission uiMission;
void Start()
{
this.uiMissionPrefab = Resources.Load<GameObject>("Prefabs/UIMission");
this.uiApp.onClickBtnMission = () => {
Debug.Log("show mission popup");
this.uiMission =
Instantiate<GameObject>(this.uiMissionPrefab).GetComponent<UIMission>();
this.uiMission.btnClose.onClick.AddListener(() => {
Object.Destroy(this.uiMission.gameObject);
});
this.uiMission.Init();
};
}
void Update()
{
}
}
|
MissionData
더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MissionData
{
public int id;
public string name;
public int goal;
public string res_name;
public int reward_type;
public int reward_amount;
public bool btn_icon_type;
}
|
UIApp
더보기
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
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UIApp : MonoBehaviour
{
public Button btnMission;
public System.Action onClickBtnMission;
// Start is called before the first frame update
void Start()
{
this.btnMission.onClick.AddListener(() =>
{
this.onClickBtnMission();
});
}
// Update is called once per frame
void Update()
{
}
}
|
UIBinder_ListItem_Mission
더보기
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
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
public class UIBinder_ListItem_Mission : MonoBehaviour
{
public Text textMissionName;
public Button btnGetReward;
public UnityAction<int> onClickBtnReward;
private int id; //mission id;
public void Init(int id,string missionName)
{
this.id = id;
this.textMissionName.text = missionName;
this.btnGetReward.onClick.AddListener(() =>
{
this.onClickBtnReward(this.id);
});
}
}
|
UIMission
더보기
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
42
43
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;
using UnityEngine.AI;
using System.Linq;
using UnityEngine.UI;
public class UIMission : MonoBehaviour
{
public Transform contents;
public Button btnClose;
private GameObject listItemPrefab;
private Dictionary<int, MissionData> dicMissionDatas;
public void Init()
{
var ta = Resources.Load<TextAsset>("mission_data");
this.dicMissionDatas =
JsonConvert.DeserializeObject<MissionData[]>(ta.text).ToDictionary(x => x.id, x => x);
this.listItemPrefab = Resources.Load<GameObject>("Prefabs/ListItem_Mission");
foreach (var data in this.dicMissionDatas.Values)
{
var listItemGo = Instantiate<GameObject>(this.listItemPrefab);
var uiBinder = listItemGo.GetComponent<UIBinder_ListItem_Mission>();
uiBinder.onClickBtnReward = (id) =>
{
Debug.LogFormat("mission id: {0}", id);
var missionData = this.dicMissionDatas[id];
Debug.LogFormat("[reward] type: {0}, amount: {1}", missionData.reward_type, missionData.reward_amount);
};
var missionName = string.Format(data.name, data.goal);
uiBinder.Init(data.id, missionName);
listItemGo.transform.SetParent(contents, false);
}
}
}
|
해야할일, 스크롤바 팝업창 새로만들어 보기
'Unity > 수업내용' 카테고리의 다른 글
2020-05-22 마우스 클릭받아 이동 (0) | 2020.05.22 |
---|---|
2020-05-21 수업내용 캐릭터선택 및 상태화면 (0) | 2020.05.22 |
2020-05-18 유니티 UITitle 만들기 (0) | 2020.05.18 |
2020-05-13 수업내용(무기바꾸기, 이펙트적용, 공격모션) (0) | 2020.05.13 |
2020-05-12 유니티 수업내용 (0) | 2020.05.12 |