본문 바로가기

Unity/제로부터 구현

Editor 구현하기

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