반응형
0. 먼저 스크롤 뷰를 만들어 주고
1. 거기에 들어가는 미션를 만들어준다 (NGUI로 만들어줌)
2. 다 만들면 프리팹으로 전환해놓기
3.데이터를 불러올 스크립터와 맵핑할 스크립터, 아이템(미션)이 초기화(생길때)값을 넣어줄 스크립터를 만든다.
4.데이터 불러오고, 초기화로 값 넘겨주고, 아이템에서 퍼블릭으로 각각 스프라이트 등등을 받아서
그 값을 바로 대입해서 바꿔준다.
완성된 것
----
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Newtonsoft.Json;
using System.Linq;
public class MissionTest : MonoBehaviour
{
public GameObject prefab;
public UIGrid grid;
private Dictionary<int, MissionData> dicMissiondatas;
// Start is called before the first frame update
void Start()
{
var ta = Resources.Load<TextAsset>("mission_data");
var json = ta.text;
this.dicMissiondatas = JsonConvert.DeserializeObject<MissionData[]>(json).ToDictionary(x => x.id);
foreach (var data in this.dicMissiondatas.Values) {
var go = Instantiate<GameObject>(this.prefab, this.grid.transform);
var mission = go.GetComponent<UIMission>();
mission.Init(data);
}
grid.Reposition();
}
// Update is called once per frame
void Update()
{
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MissionData
{
public int id;
public string mission_name;
public string mission_goal;
public int mission_amount;
public string sprite_icon;
public bool is_doing;
public string sprite_reward_icon;
public int reward_amount;
public int nowgoal_amount;
public bool is_claim;
public int energy_amount;
public int goal_amount;
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UIMission : MonoBehaviour
{
public UISprite icon;
public UILabel missionName;
public UILabel missionGoal;
private bool isDoing;
public UISprite rewardIcon;
private bool isClaim;
public UILabel rewardAmount;
public UILabel nowGoalAmount;
public UILabel goalAmount;
public UILabel energyAmount;
public GameObject isDoingGo;
public GameObject isClaimGo;
public UISprite gauge;
private MissionData data;
public void Init(MissionData data) {
this.data = data;
this.isDoing = this.data.is_doing;
this.isClaim = this.data.is_claim;
this.icon.spriteName = this.data.sprite_icon;
this.icon.MakePixelPerfect();
this.missionName.text = this.data.mission_name;
this.missionGoal.text = string.Format(this.data.mission_goal, this.data.mission_amount);
this.rewardIcon.spriteName = this.data.sprite_reward_icon;
this.rewardAmount.text = this.data.reward_amount.ToString();
this.nowGoalAmount.text = this.data.nowgoal_amount.ToString();
this.goalAmount.text = this.data.goal_amount.ToString();
this.energyAmount.text = this.data.energy_amount.ToString();
this.gauge.fillAmount = (float)this.data.nowgoal_amount / (float)this.data.goal_amount;
Debug.Log(gauge.fillAmount);
}
public void Start()
{
if (isDoing == true)
{
this.isDoingGo.SetActive(true);
this.isClaimGo.SetActive(false);
}
else {
this.isDoingGo.SetActive(false);
this.isClaimGo.SetActive(true);
}
}
}
반응형
'Unity > UIUX프로그래밍' 카테고리의 다른 글
0428 _ 데이터 불러와서 캐릭터 조립하기 (0) | 2021.04.28 |
---|---|
0428 _ 레이캐스팅 쏘고 캐릭터 이동하기. (0) | 2021.04.28 |
0427 _ NGUI Shop Data 연동하기 (0) | 2021.04.27 |
0427 _ NGUI 스크롤 뷰 만들기 (0) | 2021.04.27 |
0426_참고용, 데이터매니저(싱글턴) 초기 모습 (0) | 2021.04.26 |