팀원분께서 UGS 패키지 세팅과 공유 폴더까지 미리 준비해주셔서 구글 스프레드시트로 작성하고 받아와서 SO로 파싱만 하면 된다!
이전에 받아온 데이터로만 SO가 생성되는 문제가 있어서 추후 수정이 필요하다.
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
using Human_Data;
public class HumanDataLoader : MonoBehaviour
{
[MenuItem("Tools/Update HumanSO from JSON")]
public static void UpdateHumanSOFromJSON()
{
// JSON 파일 리스트로 로드
List<Human_Data.HumanData> humanDataList = Human_Data.HumanData.GetList();
string savePath = "Assets/Resources/SO/Human/"; // SO 저장할 경로 설정
foreach (HumanData humanData in humanDataList)
{
// 경로에 SO 있는지 확인하고 없으면 새로 생성
string soPath = $"{savePath}HumanSO_{humanData.id}.asset";
HumanSO humanSO = AssetDatabase.LoadAssetAtPath<HumanSO>(soPath);
if (humanSO == null)
{
humanSO = ScriptableObject.CreateInstance<HumanSO>();
AssetDatabase.CreateAsset(humanSO, soPath);
}
// 새로운 값으로 갱신
humanSO.id = humanData.id;
humanSO.maxFear = humanData.maxFear;
humanSO.minFatigueInflicted = humanData.minFatigueInflicted;
humanSO.maxFatigueInflicted = humanData.maxFatigueInflicted;
humanSO.cooldown = humanData.cooldown;
humanSO.speed = humanData.speed;
humanSO.lifeInflicted = humanData.lifeInflicted;
humanSO.coin = humanData.coin;
EditorUtility.SetDirty(humanSO); // 에디터에 반영
}
// 에셋에 변경 내용 적용
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
Debug.LogAssertion("HumanSO assets updated successfully!");
}
}'내일배움캠프 > TIL' 카테고리의 다른 글
| [내배캠][Unity6기][TIL] Behavior Tree 구조 설계 (3) (0) | 2024.12.04 |
|---|---|
| [내배캠][Unity6기][TIL] 11.15 최종 프로젝트 시작 전, 알아두면 좋을 것들 특강(스탠다드) (2) (0) | 2024.12.03 |
| [내배캠][Unity6기][TIL] Behavior Tree 구조 설계 (2) (0) | 2024.11.30 |
| [내배캠][Unity6기][TIL] Behavior Tree 구조 설계 (1) (0) | 2024.11.29 |
| [내배캠][Unity6기][TIL] 캐릭터 행동 구현 설계 (0) | 2024.11.28 |