유니티 파일 불러오기 - yuniti pail bulleoogi

시작하기 앞서, 저도 아직 배우는 중이기 때문에 혹시라도 틀린부분이 있다면 댓글로!

감사히 수정하겠습니다!

전 글에 올렸던 걸 보시면 사이트를 활용해서 엑셀에 적은 걸 Json으로 변환했었습니다!

그 적었던 걸 가지고 사용해보도록 할게요~

Json 파일을 아무렇게나 하나 만드신 후 내용물에 변환된 내용을 붙여넣습니다.

유니티 파일 불러오기 - yuniti pail bulleoogi

이렇게 생각보다 이쁘게 정렬되서 나와서 편합니당~

Assets 안에 보시면 제가 임의로 만든 파일입니다. 여기서 보실건 1. Plugin 2. Resources 3. Script

폴더를 봐주시면, 1. Plugin은 Json을 사용하기위한 LitJson.dll 파일이 들어있습니다.

구글 검색하셔도 어렵지 않게 구하실 수 있겠지만, 필요하신 분들을 위해 글 마지막에 첨부하겠습니다.

2. Resources 폴더는 안에는 제일 처음 복사 붙여넣기 한 Json 파일이 하나 들어가있습니다.

3. Script는 Json 파일을 불러와서 사용하기 위해 임의로 하나 생성하였습니다.

위 사진을 보시면, Json 파일을 사용하기 위해 맨 위에 헤더파일로

using LitJson; 선언

또한 텍스트를 가져다 쓰기위해서

using UnityEngine.UI; 선언

또 파일을 불러와서 읽기 위해 'File' 을 사용해야합니다. 이걸 가져다 쓰기 위해서

using System.IO; 선언

정수형 변수를 하나 선언합니다. Json 파일에 Number 이라는 곂치지 않는 고유 값을 넣었었는데요~

저 randomNumber 를 통해 지정된 번호에 있는 Json 파일의 데이터를 불러와보도록 하겠습니다.

randomNumber = Random.Range(0, 11) 을 통해 제가 버튼을 클릭할 때마다 0 ~ 10 사이의 랜덤한 값을

randomNumber 에다가 넣어줄겁니다. 그리고 해당되는 값에 존재하는 Json의 텍스트를 불러올거에요!

string JsonString = File.ReadAllText(Application.dataPath + "/Resources/DataJson/TestJson.json");

요건 다시말하면

문자열 변수에 파일을 읽어오는데, 여기서 주의하실 점은 경로입니다.

string JsonString = File.ReadAllText(Application.dataPath + "/해당경로/Json파일명.json");

만드신 폴더 및 파일명이 다르시다면, 똑같이 넣지 마시고 만드신 이름대로 입력해주셔야 합니다!

그리고 PasingJsonQuest(JsonData name) 함수를 이용해서

string tmpName = name[randomNumber]["Name"].ToString();

string tmpReward = name[randomNumber]["Reward"].ToString();

요렇게 JsonData 값을 넘겨받은 name 에다가, 뽑아온 랜덤한 정수인 randomNumber값을 넣어줍니다.

그 후에 ["Name"] .ToString(); << 이부분 또한 주의하실점은, 처음 Json을 만들었을 때 최상위에 입력한 기준 값의 이름을 적어주시면 됩니다. 저는 Json파일의 최상위 기준을 Number, Name, Reward로 잡았기 때문에,

랜덤한 Number값을 가지고 그에 해당되는 Name과 Reward를 받아오기 위해서 "Name" 과 "Reward"를 받아왔습니다.

이렇게까지 적어주셨으면 사실상 완성!

아무것도 없는 하이어라키 창에 마우스 우클릭 -> UI -> 버튼생성, 우클릭 -> UI -> 텍스트 두개생성

맨 아래 ButtonManager는 저의 경우에 아무것도 없는 오브젝트를 생성해서 그 안에 만든 스크립트를 넣었습니다. 마우스 우클릭 후 -> Create Empty

그리고 ButtonManager에 지금까지 만든 RewardManager를 드래그하셔서 넣으시면 뙇 하고 들어가는데,

직렬화(SerializeField) 해둔 텍스트 두개가 보일겁니다.

여기에 생성하신 텍스트 두개를 순서대로 넣어주시면 됩니다.

버튼을 클릭하신 뒤, On Click() 부분 아래의 +를 누르신 후,빨간 동그라미 1번처럼 드래그 해서 넣으신 후에, 우측의 2번 항목을 클릭해 보시면 스크롤이 내려가면서 ButtonManager에 넣으신 스크립트 명이 나옵니당.

저는 아까 만든 ButtonClickEvent()로 지정하고 저장!

아래는 실행결과 입니다.

숫자를 랜덤으로 받아서 0부터 10번 항목까지 클릭할 때마다 변경되어 불러오는 모습을 볼 수 있습니다.

응용해서 가중치 랜덤 값이나, Json의 특정 값마다 조건문을 넣거나 비교문을 삽입해서 좀 더 유동적으로 사용이 가능합니다!

+ 추가로 소스코드는 사용가능하시게 따로 첨부드립니다.

using System.Collections; using System.Collections.Generic; using UnityEngine; using LitJson; using System.IO; using UnityEngine.UI; public class RewardManager : MonoBehaviour { [SerializeField] Text numberText; [SerializeField] Text rewardText; int randomNumber; public void ButtonClickEvent() { randomNumber = Random.Range(0, 11); StartCoroutine(LoadCo()); } IEnumerator LoadCo() { string JsonString = File.ReadAllText(Application.dataPath + "/Resources/DataJson/TestJson.json"); JsonData jsonData = JsonMapper.ToObject(JsonString); ParsingJsonQuest(jsonData); yield return null; } private void ParsingJsonQuest(JsonData name) { string tmpName = name[randomNumber]["Name"].ToString(); string tmpReward = name[randomNumber]["Reward"].ToString(); numberText.text = tmpName; rewardText.text = tmpReward; } }