728x90
오늘 학습한 내용
1) Unity EditorWindow
Unity에서는 EditorWindow를 활용하여 커스텀 에디터 창을 만들 수 있습니다.
이번에 구글 스프레드시트에서 데이터를 다운로드하고 ScriptableObject(SO)를 생성 및 적용하는 툴을 제작하였습니다.
이 툴을 통해 유닛(Unit) 및 몬스터(Monster) 데이터를 가져와 게임 내에서 활용할 수 있습니다.
EditorWindow를 활용한 커스텀 툴 구현
using UnityEditor;
using UnityEngine;
using System.Collections.Generic;
public class DataDownloaderWindow : EditorWindow
{
private List<GameObject> myObj = new List<GameObject>();
[MenuItem("Tools/Data Downloader Tool")]
public static void ShowWindow()
{
GetWindow<DataDownloaderWindow>("Data Downloader Tool");
}
private void OnGUI()
{
GUILayout.Label("Clear TmpObjects", EditorStyles.boldLabel);
if (GUILayout.Button("Clear TmpObjects Button"))
{
DestroyTmpObj();
}
GUILayout.Space(20);
GUILayout.Label("Download Unit/Monster Data", EditorStyles.boldLabel);
if (GUILayout.Button("Download Unit Data"))
{
GameObject obj = new GameObject("tmpUnitDataDownloader");
CharacterDataDownloader downloader = obj.AddComponent<CharacterDataDownloader>();
downloader.StartDownload(true);
myObj.Add(obj);
}
if (GUILayout.Button("Download Monster Data"))
{
GameObject obj = new GameObject("tmpMonsterDataDownloader");
CharacterDataDownloader downloader = obj.AddComponent<CharacterDataDownloader>();
downloader.StartDownload(false);
myObj.Add(obj);
}
}
private void DestroyTmpObj()
{
foreach (var obj in myObj)
{
DestroyImmediate(obj);
}
myObj.Clear();
}
}
코드 분석
EditorWindow
- EditorWindow를 상속받아 Unity의 새로운 커스텀 에디터 창을 생성합니다.
- 기존 Inspector가 아닌, 별도의 창을 만들어 툴을 실행할 수 있도록 합니다.
MenuItem("Tools/Data Downloader Tool")
- Unity 메뉴 바에 Tools → Data Downloader Tool 항목을 추가하여,
해당 항목을 클릭하면 커스텀 에디터 창이 실행됩니다.
GetWindow<DataDownloaderWindow>("Data Downloader Tool");
- 에디터 창을 생성하는 메서드입니다.
- 창의 제목을 "Data Downloader Tool"로 설정합니다.
OnGUI()
- 커스텀 에디터 창의 UI를 구성하는 메서드입니다.
- GUILayout.Label()과 GUILayout.Button()을 이용해 텍스트와 버튼을 배치합니다.
GameObject obj = new GameObject("tmpUnitDataDownloader");
- 데이터를 다운로드하는 임시 객체를 생성합니다.
- CharacterDataDownloader 컴포넌트를 추가하여, 유닛 또는 몬스터 데이터를 다운로드합니다.
기능 요약
기능 1: 임시 객체 삭제
- "Clear TmpObjects Button"을 클릭하면 다운로드 작업 후 남아 있는 임시 객체들을 삭제합니다.
기능 2: 유닛 데이터 다운로드
- "Download Unit Data" 버튼을 클릭하면 CharacterDataDownloader가 유닛 데이터를 구글 스프레드시트에서 다운로드하여 SO에 적용합니다.
기능 3: 몬스터 데이터 다운로드
- "Download Monster Data" 버튼을 클릭하면 몬스터 데이터를 동일한 방식으로 다운로드 및 적용합니다.
결과
- 에디터 창이 생성되고, 버튼 클릭만으로 유닛/몬스터 데이터를 다운로드할 수 있습니다.
- 임시 객체 정리 기능을 추가하여 불필요한 오브젝트가 남지 않도록 최적화하였습니다.
- 구글 스프레드시트에서 데이터를 가져와 SO(ScriptableObject)에 생성 및 적용하는 자동화된 워크플로우를 구축했습니다.
728x90
'내일배움캠프' 카테고리의 다른 글
내일배움캠프 Unity - TIL : 25.04.04 (1) | 2025.04.04 |
---|---|
내일배움캠프 Unity - TIL : 25.04.02 (0) | 2025.04.02 |
내일배움캠프 Unity - TIL : 25.03.26 (0) | 2025.03.26 |
내일배움캠프 Unity - TIL : 25.03.25 (0) | 2025.03.25 |
내일배움캠프 Unity - TIL : 25.03.19 (0) | 2025.03.19 |