유니티에서 게임의 설정을 Json 파일로 저장해 사용한다면 게임을 실행할 때마다 저장된 Json파일을
가져와 게임의 설정 값에 대입시켜 주면 될 것입니다.
문제는 JsonData.json 파일을 읽어 오는 도중에 게임 설정 값을 적용하는 코드로 넘어가 버리니 Null 에러가
발생하게 됩니다.
비동기 방식으로 JsonData.json 파일을 가져온 후 완료되었다면 게임 설정 값에 적용하는 방식을 알아보겠습니다.
[System.Serializable]
public class GameData {
public int playerLevel;
public int playerCurrntHp;
public float playerPower;
}
우선 JsonData.json으로 변환될 간단한 GameData 모델이 있습니다.
using System.Threading.Tasks;
public class DataManager : MonoBehaviour {
public async void LoadData() {
GameData gameData = new GameData();
var result = await Task.Run<GameData>(() => {
string loadDataFile = 게임 데이터 불러오기;
gameData = loadDataFile을 Json으로 변환;
return gameData;
});
if (result != null) {
불러온 Json 파일 게임 데이터에 적용;
}
}
}
비동기 Task 사용을 위해 using System.Threading.Tasks; 가 필요합니다.
LoadData() 앞에 async를 붙여 비동기 방식임을 선언합니다.
var result = await Task.Run<GameData>() await Task.Run 비동기 방식으로 실행될 코드를 처리하는 곳입니다.
<GameData> => result에 비동기로 넘겨줄 데이터가 GameData방식임을 선언해 줍니다.
읽어올 파일이 단순 Text라면 await Task.Run(() => {}) 이렇게 사용하시면 됩니다.
이후 게임 데이터를 읽고 Json파일로 변환하는 과정을 거친 후
return gameData; => result에 gameData를 넘겨줍니다.
다시 한번.. 위에서 Task.Run <GameData>로 선언했기에 result는 GameData 모델의 구조를 가집니다.
if (result != null) => json 데이터 파일을 가져왔다면 읽어온 게임 데이터를 적용시켜 주시면 됩니다.
이상 비동기 방식으로 데이터 불러오기였습니다.
'Unity' 카테고리의 다른 글
유니티 - 게임 데이터 JSON으로 저장하기 (4) | 2024.07.09 |
---|---|
유니티 - 오브젝트 풀링(Object pooling) (9) | 2024.07.09 |
유니티 - 싱글톤 패턴(Singleton) (0) | 2024.07.09 |
유니티 - 커스텀 에디터 (Custom Editor) (0) | 2024.07.09 |
유니티 - CustomEditor 활용 (Inspector 꾸미기) (0) | 2024.07.09 |