중가 과제물 (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 파일을 만들어서 넣어줘야 빌드할때 오류가 나지않는다.