-
Editor 구현하기Unity/제로부터 구현 2023. 12. 5. 17:17728x90
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'Unity > 제로부터 구현' 카테고리의 다른 글
Electric Attack 구현하기 ( +Overlap) (0) 2023.12.11 A* 알고리즘을 사용한 길찾기 구현 (0) 2023.12.07 같은 맵 계속 반복 시키기(3D). (0) 2023.12.01 1인칭 시점 구현하기 + 이동 (0) 2023.11.30 짝 맞추기 카드 만들기, 카드 섞기, 리소스를 사용한 스프라이트 설정 (0) 2023.11.28