이번엔 데이터 베이스를 이용하기 전에 간단한 json파일들을 이용하여
데이터를 활용하는 방법에 대해 알아보도록 하겠습니다
먼저 json파일을 사용하기위한 순서를 생각해보면
1. json파일 불러오기
2. json파일 읽기/저장
3. 데이터 사용
이런식으로 구성될 것 같습니다.
그럼 1! 파일을 불러와야합니다.
지난글에서 말했듯이 에디터상에서는 C:\~~~~\~~~~\~~~~\~~~~\UnityBlog 로 경로를 지정하여 불러올 수 있지만..
빌드시에는 경로가 변경되기에! 이 점을 생각하여 링크를 구성해 주어야합니다.
그럼 json파일을 어디 저장을 해놔야 하나!! 하신다면
아래글의 resources폴더와 streamingAssets폴더부분을 읽어보시면 될 것 같습니다.
그럼이제 2가지 경우를 생각해 저장해 보겠습니다.
1. 만약 resources폴더에 저장을 한다??
이 경우에는 라이브러리가 있습니다....
TextAsset textAsset = Resources.Load<TextAsset>("Json/SchoolLocationJson");
//TextAsset textAsset = Resources.Load<TextAsset>("Resources하위폴더부터 json파일까지, 확장자 제외");
위 코드처럼 바로 json파일을 TextAsset으로 불러올 수 있습니다.
2. 만약 streamingAssets폴더에 저장을 한다면?
이 경우에는 약간 복잡해지지만 그렇게 막 다르진 않습니다.
WWW를 이용하는 방법인데 www는 원래 웹 정보를 얻어오는 기능으로 사용되지만 여기서도 사용할 수 있다고 합니다.
private static string JsonFilelocation = Application.streamingAssetsPath + "/ChatSet.json";
...
WWW reader = new WWW(SchoolLocationPath);
만약 컴퓨터.. . 라면..
경로는
Application.persistentDataPath를 통해 얻어 오거나 직접 입력해서 받아 올 수 있습니다...
string temp = File.ReadAllText(SchoolLocationPath);
StreamReader stream = new StreamReader(temp);
string data = stream.ReadToEnd();
LocationNumbers LocationList = JsonUtility.FromJson<LocationNumbers>(data); //Json data 변환
stream.Close(); // 사용 후에는 꼭 닫아준다.
이부분은 좀더 알아봐야 해서 추후에 추가 하도록 하겠습니다.
json을 불러 왔으니 2. 데이터를 변환 해보겠습니다 .
Json을 관리 , 수정 할 수 있는 함수가 이미 만들어져 있기에 사용하면 매우매우 쉽게 구현 가능합니다!
바로 JsonUtility 라이브러리의 FromJson 함수입니다!
기본적인 데이터 형식은 아래와 같이 진행 하겠습니다!
데이터 변환시에는 JsonUtility.FromJson 함수를 사용하기에 바로 사용하면 될 것 같지만!
이를 사용하기 전에 사전 작업이 필요합니다 .
위와 같은 json파일이 있으면 이를 속성별로 정리를 해 주어야 하기에 json을 받아줄 클래스를 선언해 주어야합니다.
만약 json파일 내부에
아래처럼 하나의 정보로 구성이 되어있다....
{
"Role": 0,
"Message": "안녕!"
}
그럼 아래처럼 구성해주고
public class Location
{
public int Role;
public string Message;
}
아래처럼 받아올 수 있습니다.
Location LocationList = JsonUtility.FromJson<Location>(textAsset.text);
하지만 대부분이 여러개의 정보를 하나의 json으로 받아오므로 이중 구조를 만들어 주어야합니다 .
아래처럼 클래스를 배열로 둘러싸는 형식으로 만들어 줍시다.
public class Location
{
public int num;
public double latitude;
public double longitude;
public string name;
}
public class LocationNumbers
{
public Location[] Body;
}
이후 아래처럼 받아오면 끝!
LocationNumbers LocationList = JsonUtility.FromJson<LocationNumbers>(textAsset.text);
이제 3. 데이터 접근방법에 대해서 알아보겠습니다.
위에서 데이터를 받게되면 아래와 같은 foreach문을 통해 접근 할 수 있습니다.
foreach (Location lt in LocationList2.Body)
{
print(lt.name + " : " + lt.num);
}
끝...?
마지막으로 json파일을 생성하고 싶다면..
JsonUtility.ToJson 함수를 사용할수 있습니다.
Location data = new Location();
data.num = 12;
data.name = "오늘도 열심히";
File.WriteAllText(Application.dataPath + "/TestJson.json", JsonUtility.ToJson(data3));
부족한 부분도 있는것 같네요.. 추가할 부분이 생기면 다시 추가하도록 하겠습니다!
틀린점이 있다면 댓 달아주세요!
'유니티 최고 > 유니티 기초' 카테고리의 다른 글
유니티(Unity) Legacy 와 TextMesh Pro의 차이 & 글꼴(Font) 지정하기 (0) | 2024.04.17 |
---|---|
유니티(Unity) 상속에 대해서 + 사용법 (0) | 2024.04.05 |
유니티(Unity) ui 애니메이션 / 이팩트 (2) | 2023.04.05 |
유니티(Unity) 아이콘 설정 (0) | 2023.04.03 |
유니티(Unity) 애니메이션 제작, 실행,변경 (0) | 2022.11.09 |
댓글