그림에서
name
min_damage
max_damage
item_type
4가지 속성을 가지고 배열을 만들어서 json 파일로저장
json파일을 만들때 " "가 중요하다.
만들고 나서 Format을 누르면 잘 작성이 됬는지 확인할 수 있다
코드를 작성 후 오류가 나지 않으면 이렇게 생성 된 걸 알 수 있다.
그 후 Text를 복사하고 메모장에 저장
저장할 때 주의
우선 Unity에 Resources 라는 폴더를 만들고 넣어주면 되는데 이 때 반드시 폴더명을 이렇게 해주어야 한다.
https://www.newtonsoft.com/json
Json.NET - Newtonsoft
× PM> Install-Package Newtonsoft.Json or Install via VS Package Management window. ZIP file containing Json.NET assemblies and source code: Json.NET
www.newtonsoft.com
Newtonsoft.Json은 C#에서 JSON 데이터를 처리하는 데 사용되는 강력한 라이브러. 주요 기능은 다음과 같다.
- JSON 직렬화(Serialization): C# 객체를 JSON 문자열로 변환합니다.
- JSON 역직렬화(Deserialization): JSON 문자열을 C# 객체로 변환합니다.
- LINQ를 사용한 JSON 쿼리(Query): LINQ 쿼리를 사용하여 JSON 데이터를 쉽게 쿼리하고 필터링할 수 있습니다.
- JSON 스키마(Validation): JSON 데이터가 주어진 스키마에 부합하는지 확인할 수 있습니다.
- JSON 파싱(Parsing): JSON 문자열을 해석하고 객체로 변환합니다.
- JSON 변환(Transform): JSON 데이터를 다른 형식으로 변환합니다.
using Newtonsoft.Json;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
public class HelmMain : MonoBehaviour
{
void Start()
{
TextAsset asset = Resources.Load<TextAsset>("helm_data");
string json = asset.text;
Debug.Log(json);
HelmData data = JsonConvert.DeserializeObject<HelmData>(json);
//Debug.Log(data);
Debug.LogFormat("{0} {1} {2} {3}", data.name, data.min_damage, data.max_damage, data.item_type);
//저장
//직렬화 객체 생성
HelmInfo info = new HelmInfo(data.min_damage, data.max_damage);
//직렬화 시작(객체 ->문자열)
string serializedJson = JsonConvert.SerializeObject(info);
//파일로 저장
//Application.persistentDataPath : 플랫폼 OS에 따라 경로를 자동으로 잡아줌
string path = Application.persistentDataPath + "/helm_info.json";
Debug.Log(path);
//문자열을 파일로 저장
File.WriteAllText(path, serializedJson); //경로, 문자열
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HelmData
{
public string name;
public int min_damage;
public int max_damage;
public string item_type;
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HelmInfo
{
public int min_damage;
public int max_damage;
public HelmInfo(int min_damage, int max_damage)
{
this.min_damage = min_damage;
this.max_damage = max_damage;
}
}
실행을 시켜보면
1. 데이터를 문자열을 출력
2. 데이터를 역직렬화 후 데이터를 잘 받고 있는지 확인
3. Helminfo클래스를 메인에서 불러온 후 생성자를 생성한뒤 지정한 경로 위치로 생성후 저장 => 그 위치 출력
보기와 같이 출력한 경로를 검색하면 지정된 경로에 파일이 저장됨을 확인 할 수 있다.
'산대특 > 게임 UIUX 프로그래밍' 카테고리의 다른 글
Shader 기초 (0) | 2024.02.18 |
---|---|
Json 역직렬화 -> 직렬화 -> 데이터 저장 -> 경로확인 (배열) (0) | 2024.02.15 |
데이터 연동해서 UI 보여주기 (0) | 2024.02.13 |
설날과제 20240212 (0) | 2024.02.12 |
설날과제 20240210 (0) | 2024.02.12 |