반응형
유니티 에디터터를 사용할경우 최상단에 네임스페이스
using UnityEditor;
추가 해주어야지 사용 가능합니다.
그리고 빌드할려고 일반 폴더에 있을경우 컴파일이 안될경우가 있습니다.
그 이유는 Editor 관련 코드는 전부 #if UNITY_EDITOR안에 들어 있거나 해당 코드가 Editor폴더에 있어야합니다.
안전하게 Editor폴더에 있으면 좋을것 같습니다.
예시)
씬안에 Text를 모두 검색후 Text가 있는 오브젝트에 Outline 스크립트를 넣어줍니다.
상단에 표시해주기 위해서는 함수 위에
[MenuItem("유니티에니터 상단에 보여질 경로")] 추가해줍니다.
예)
[MenuItem("/UI/Text스크립트 검색후 Outline넣기")]
메뉴 클릭시 함수가 실행됩니다.
씬에 있는 모든 Text와 리소스 폴더 Prefab도 찾아서 바꾸어 줍니다.
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;
public class UIAddScript : Editor
{
[MenuItem("/UI/Text스크립트 검색후 Outline넣기")]
public static void AddedTextComponent()
{
var txts = Resources.FindObjectsOfTypeAll(typeof(Text)) as Text[];
if (txts != null && txts.Length > 0)
{
foreach (var t in txts)
{
if (t != null && !t.GetComponent<Outline>())
t.gameObject.AddComponent<Outline>();
}
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
}
}
}
마지막에 AssetDatabase 함수를 실행해주는게 좋습니다. 에셋은 추가만 하고 저장을 안할시 리셋 될경우가 있습니다.
AssetDatabase.SaveAssets();
이 함수는 저장되지 않는 모든 에셋들을 저장하는 함수입니다.
AssetDatabase.Refresh();
에셋들을 갱신해 주는 함수입니다.
2. 유니티 에디터 창 만들기
에디터를 창을 만들경우 EditorWindow을 상속받아야 합니다.
using UnityEditor;
using UnityEngine;
public class TestEditorWindow : EditorWindow
{
string TestWindow = "Hello World";
bool testGroupEnabled;
bool testBool = true;
float testFloat = 10.1f;
[MenuItem("UI/TestEditorWindow")]
static void Init()
{
TestEditorWindow window = (TestEditorWindow)EditorWindow.GetWindow(typeof(TestEditorWindow));
window.Show();
}
void OnGUI()
{
GUILayout.Label("Base Settings", EditorStyles.boldLabel);
TestWindow = EditorGUILayout.TextField("Text Field", TestWindow);
testGroupEnabled = EditorGUILayout.BeginToggleGroup("Optional Settings", testGroupEnabled);
testBool = EditorGUILayout.Toggle("Test Toggle", testBool);
testFloat = EditorGUILayout.Slider("Test Slider", testFloat, -5, 5);
EditorGUILayout.EndToggleGroup();
}
}
반응형
'Unity 유니티 기초강의' 카테고리의 다른 글
유니티 Unity 교육 책 추천 (0) | 2022.06.04 |
---|---|
1 Unity 유니티 UGUI Canvas 캔버스 1 (0) | 2022.06.04 |
C# 반환값 여러개 받기 Tuple 메서드 (0) | 2022.05.19 |
유니티 코루틴 Coroutine 딜레이 알아보기 (0) | 2022.05.17 |
유니티 Unity 메모리 관리 가비지 컬렉션 (0) | 2022.05.17 |
댓글