ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Editor 구현하기
    Unity/제로부터 구현 2023. 12. 5. 17:17
    728x90

    1. Board 판 만들기

    2.Editor 만들기

     

     

     

    1.Board 판 만들기

    • 단순한 보드판 생성 함수를 만듭니다.
    • x*y 크기의 보드판을 생성합니다.
    • 보드판은 1개만 존재할 것이기 때문에 보드판이 생성되었을때 또 다른 보드판이 있는지 확인후 있다면 그 즉시 삭제하고 새로운 보드판을 만듭니다.
     public void BoardGenerator()
        {
            string holderName = "BoardHolder";
    
            if (transform.Find(holderName))
            {
                DestroyImmediate(transform.Find(holderName).gameObject);
            }
    
            Transform boardHolder = new GameObject(holderName).transform;
            boardHolder.transform.parent = transform;
    
            for(int i = 0; i < x; i++)
            {
                for(int j = 0; j < y; j++)
                {
                   GameObject newDot = Instantiate(dot, new Vector3(start.x + scale * i, start.y + scale * j), Quaternion.identity);
                    newDot.transform.parent = boardHolder;
                }
            }
        }

     

    2.Editor 만들기

    • Editor 폴더를 만듭니다.
    • 폴더 안에 스크립트를 추가합니다.
    • Editor로 사용할 것이기 때문에 using UnityEditor 을 추가해 줍니다.
    • 위 에디터를 어느곳에 적용 시킬지 customEditor(typeof())로 설정해 줍니다.
    • 스크립트에 Editor을 상속시켜줍니다.
    • OnInspectorGUI 함수를 오버라이드 해줍니다.
    • 인스펙터 창이 켜졌을때와, 버튼을 추가해줘서 버튼을 누를때 보트판이 생성되도록 해줍니다.

     

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEditor;
    
    [CustomEditor(typeof(Board))]
    public class BoardEditor : Editor
    {
        public override void OnInspectorGUI()
        {
            
            Board board = target as Board;
    
            if (DrawDefaultInspector())
            {
                board.BoardGenerator();
            }
            if (GUILayout.Button("Generator"))
            {
                board.BoardGenerator();
            }
        }
    }

     

    보드의 인스펙터창을 수정하거나 Generator 버튼을 누르면 게임을 실행시키지 않더라도 Sence에서 바로 확인할 수 있습니다.

    728x90
Designed by Tistory.