중가 과제물 (11/19까지)
코드
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
//MonoBehaviour 는 실행되는 오브젝트에 들어가는 것
public class SampleMeunItem : EditorWindow
{
[MenuItem("ML Tool/SampleFunction")]
public static void SampleFunction()
{
//대화상자 열기
var filePath = EditorUtility.OpenFilePanel("Select Text File", "", "txt,png");
Debug.Log("메뉴실행 : " + filePath);
}
//static 정적키워드 - 변수, 함수 등에 붙을 수 있다.
}
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
public class SampleMeunItem2 : EditorWindow
{
[MenuItem("ML Tool/SampleWindow")]
public static void SampleWindowFunction()
{
Debug.Log("메뉴실행 : ");
var window = CreateInstance<SampleMeunItem2>();
window.position = new Rect(Screen.width / 2, Screen.height / 2, 200, 200);
window.Show();
//windo. Popup, Modal 등등 여러가지 있음
//Show가 제일 무난하다.
//window.position으로 크기 조절 가능
}
static int number = 0;
private void OnGUI()
{
number = EditorGUILayout.IntField("Number", number);
//커스텀 GUI를 구성하는 곳
if (GUILayout.Button("OK"))
{ //버튼을 누르면 실행
Debug.Log("OK 버튼 클릭");
}
else if (GUILayout.Button("Close"))
{ //버튼을 누르면 실행
Debug.Log("Close 버튼 클릭");
Close();
}
else if (GUILayout.Button("Number check"))
{ //버튼을 누르면 실행
Debug.Log("Number 버튼 클릭 - " + number);
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
[SerializeField] int num = 0;
public int numNum = 10;
}
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
//어떤 스크립트의 인스펙터 UI를 커스텀 할거냐 라고 물어보는것
[CustomEditor(typeof(Test))]
public class TestEditor : Editor
{
//오버라이드
//메서드 오버로딩, 메서드 오버라이딩
public override void OnInspectorGUI()
{
//기본을 그리는 것
DrawDefaultInspector();
//테스트 스크립트 정보를 얻어보자
var origin = (Test)target; //위의 커스텀에디터의 Test를 가르키는것
if (GUILayout.Button("OK"))
{
Debug.Log("Test Button Click" + origin.numNum);
}
}
}
이 스크립트들은 스크립트의 Editor 파일을 만들어서 넣어줘야 빌드할때 오류가 나지않는다.