Unity/제로부터 구현
Editor 구현하기
휘게31
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