프로젝트가 커지면 스크립트에 에디팅 기능이 도움이 될 때가 많다.
유니티에는 특정 메뉴를 누르면 원하는 함수를 실행시킬 수 있는데, 다음과 같은 속성으로 가능하다.
- MenuItem : 에디터 창 메뉴에서 static 함수 실행
- ContextMenu : Inspector에서 static이 아닌 함수 실행
- ContextMenuItem : 인스펙터 변수에서 static이 아닌 함수 실행
MenuItem
MenuItem을 사용하기 위해서 UnityEditor를 선언한다.
그리고 static으로 아래 두 함수를 만들자.
[MenuItem("Help/Help Me")]
static void HelpMe()
{
Debug.Log("Help Me, Please...");
}
[MenuItem("MyMenu/MyDebug")]
static void MyDebugLog()
{
Debug.Log("Debug!!");
}
원래 있던 Menu라면 Help Me 처럼 메뉴에 추가된다. 클릭하면 함수가 실행된다.
MyMenu와 같이 원래 없던 탭이라면 새로운 탭을 만든다.
static 함수가 아니면 메뉴에 등록되지 않는다.
ContextMenu
ContextMenu는 static이 아닌 일반 함수에 등록한다. void가 아니라도 실행된다.
/ 가 있다면 한 step 메뉴 탭이 더 생긴다. 자신이 만든 메뉴만 정리할 때 사용할 수 있다.
public int a;
[ContextMenu("MyFunction/DebugField")]
void showField()
{
Debug.Log("a : " + a);
}
스크립트의 ⁝ 버튼을 누르면 [MyFunction] → [DebugField]가 보인다.
스크립트의 특정 함수를 실행시킬 때 사용할 수 있다.
MenuItem과 반대로 static 함수라면 등록되지 않는다.
ContextMenuItem
ContextMenuItem은 변수를 오른쪽 마우스 버튼으로 클릭한 후 실행한다.
[ContextMenuItem("MyContextMenu/A 초기화", "fieldInit")]
public int a;
void fieldInit()
{
a = 0;
Debug.Log("초기화 완료.");
}
A 초기화를 눌러서 fieldInit 함수를 성공적으로 실행시켰다.
ContextMenuItem도 static이 아닌 함수만 실행한다.
static 함수라면 등록되지 않는다.
최종 코드는 아래와 같다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor; /* this is for MenuItem */
public class MenuItemTest : MonoBehaviour
{
[MenuItem("Help/Help Me")]
static void HelpMe()
{
Debug.Log("Help Me, Please...");
}
[MenuItem("MyMenu/MyDebug")]
static void MyDebugLog()
{
Debug.Log("Debug!!");
}
[ContextMenuItem("MyContextMenu/A 초기화", "fieldInit")]
public int a;
[ContextMenu("MyFunction/DebugField")]
void showField()
{
Debug.Log("a : " + a);
}
void fieldInit()
{
a = 0;
Debug.Log("초기화 완료.");
}
}
Unity Plus:
Unity Pro:
Unity 프리미엄 학습:
'개발 > Unity' 카테고리의 다른 글
유니티 - 인보크로 일정 시간 이후 함수 실행하기, 반복하기 (Invoke) (0) | 2022.07.16 |
---|---|
유니티 Attribute - ExecuteInEditMode / ExecuteAlways로 편집 모드에서 스크립트 실행하기 (0) | 2022.07.10 |
유니티 Attribute - DisallowMultipleComponent로 스크립트 중복 금지하기 (0) | 2022.07.09 |
유니티 에셋 - Lean Touch로 마우스 클릭 이펙트 보여주기 (Click Effect / Input Management) (0) | 2022.07.09 |
유니티 C# - Switch Expression (스위치 표현식) (0) | 2022.07.08 |
댓글