Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- c#기초문법
- 유니티3dui
- unity3dservival
- C#문법
- c#문제
- 유니티공부
- c#
- c#코딩기초트레이닝
- c#코테
- unity게임
- unity3d
- 유니티게임만들기
- 스파르타
- unity공부
- c#기본문법
- c# 백준
- 오블완
- 스파르타코딩클럽
- 시샵문법
- unity게임만들기
- Unity
- c# c#프로그래머스
- unity3d게임만들기
- 유니티서바이벌게임만들기
- 유니티상호작용
- 티스토리챌린지
- c#프로그래머스기초문법
- Console.WriteLine
- 유니티
- 시샵
Archives
- Today
- Total
나 개발자 진짜 되냐?
[ 12月 13日 ] 오늘 내가 배운 것 _ 64日次 _ JSON을 SO로 바꾸기 본문
오늘은
SO딸깍을 성공했다.
제대로 이해하는것이 제일 중요하긴 한데..
완성한 것에 뿌듯해서
히죽히죽하는 중이다.
살짝 정리하는 시간을 가져볼까 한다.
앞으로도 내가 잘 쓸 수 있었으면 좋겠다.
먼저!
EditorWindow를 상속받아서
몬스터데이터를 바꿔주는 클래스를 만들어주었다.
메뉴를 만들어준다.
이렇게 해주면
도구에 야무지게 하나 생긴다.
일단 리소시스 파일에서 몬스터 친구를 데려온다.
맞춰준 값을 FormJson 해서 json을 불러와준다.
다음에 경로를 지정해준다.
if문 안에 있는 건
유니티에서 지원해 주는 친구로
파일이 없다면!
자동으로 만들어준다.
이다음에 리스트 돌면서
SO에 넣어주면 된다.
AssetPath로 경로 지정후
AssetDatabase에서 CreateAsset를 해준다.
AssetDatabase는 유니티에서 지원해 주는 것으로
꼭!!!!!
필요하다.
이 친구가 없으면
SO로 평생 못 바꾼다!
꼭 알아두자!
이렇게 해주면!
가져와서 갱신해서
똵! 생긴다
후후후후후후후훟!!
드디어
나도 에디터를 만들어보았다.
짧지만 굵었던 친구..
오래오래 기억하고 싶다 ㅎㅅㅎ
using UnityEngine;
using UnityEditor;
using System.IO;
public class MonsterDataConverter : EditorWindow
{
// Utility 메뉴에 항목 추가
[MenuItem("Utility/Json To SO")] //JSON to SO
public static void ConvertJsonToSO()
{
// JSON 데이터 경로 설정 + 파일로드
TextAsset MonsterJsonData = ResourceManager.Instance.LoadAsset<TextAsset>("MonsterData", eAssetType.JsonData);
if (MonsterJsonData == null)
{
Debug.LogError($"JSON 파일 없다");
return;
}
// JSON 데이터 파싱
MonsterDataList monsterDataList = JsonUtility.FromJson<MonsterDataList>(MonsterJsonData.text);
if (monsterDataList == null || monsterDataList.MonsterData == null)
{
Debug.LogError("JSON 데이터를 MonsterDataList로 파싱하는 데 실패");
return;
}
// 각 MonsterData를 ScriptableObject로 저장
string outputFolder = "Assets/SO/MonsterDataSO";
if (!Directory.Exists(outputFolder))
{
Directory.CreateDirectory(outputFolder);
}
foreach (var monsterData in monsterDataList.MonsterData)
{
// ScriptableObject 생성
MonsterDataSO monsterSO = ScriptableObject.CreateInstance<MonsterDataSO>();
monsterSO.id = monsterData.Id;
monsterSO.name = monsterData.Name;
monsterSO.attackRange = monsterData.AttackRange;
monsterSO.skillRange = monsterData.SkillRange;
monsterSO.forceTransitionTime = monsterData.ForceTransitionTime;
monsterSO.force = monsterData.Force;
monsterSO.skillTransitionTime = monsterData.SkillTransitionTIme;
monsterSO.dealingStartTransitionTime = monsterData.DealingStartTransitionTime;
monsterSO.dealingEndTransitionTime = monsterData.DealingEndTransitionTime;
monsterSO.baseSpeed = monsterData.BaseSpeed;
monsterSO.baseRotationDamping = monsterData.BaseRotationDamping;
monsterSO.walkSpeedModifier = monsterData.WalkSpeedModifier;
monsterSO.chaseSpeedModifier = monsterData.ChaseSpeedModifier;
monsterSO.playerChasingRange = monsterData.PlayerChasingRange;
monsterSO.hp = monsterData.Hp;
monsterSO.attackPower = monsterData.AttackPower;
// ScriptableObject를 프로젝트에 저장
string assetPath = $"{outputFolder}/{monsterData.Name}.asset";
AssetDatabase.CreateAsset(monsterSO, assetPath);
}
// 에셋 저장 및 갱신
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
Debug.Log("ScriptableObject 변환 및 저장 완료.");
}
}
아 몰라 나 이제 쉴 거야!
'오늘 공부를 정리해봐요!' 카테고리의 다른 글
[ 12月 17日 ] 오늘 내가 배운 것 _ 66日次 _ 튜터님은 츤데레👏 (4) | 2024.12.17 |
---|---|
[ 12月 16日 ] 오늘 내가 배운 것 _ 65日次 _ 쓰리 투 원 대격변! (0) | 2024.12.16 |
[ 12月 12日 ] 오늘 내가 배운 것 _ 63日次 (7) | 2024.12.12 |
[ 12月 11日 ] 오늘 내가 배운 것 _ 62日次 _ 램을 바꾸는건 세상에서 가장 힘든 일 (2) | 2024.12.11 |
[ 12月 10日 ] 오늘 내가 배운 것 _ 61日次 (4) | 2024.12.10 |