개발을 하다보면 런타임에 돌아가지 않고 에디터 상에서 특정 함수가 실행되게 하고 싶을 때가 종종 생깁니다.
예를 들어, 10x10 블록을 배치한다거나 랜덤한 미로를 만든다 등의 경우가 있습니다.
저의 경우, 디버그를 할 때 사용하기 위한 Debug Color Preset을 적용해야 하기 위해 인스펙터창에서 특정 함수가 실행되게 해주어야 합니다.
ContextMenu
[ContextMenu]는 Unity의 C# 스크립트에서 사용되는 특성(Attribute) 중 하나로, 해당 스크립트의 메서드를 인스펙터에서 실행할 수 있도록 하는 특성입니다.
[ContextMenu] 특성을 메서드 위에 추가해준 다음 "이름"을 설정해주시면, 해당 메서드가 인스펙터에서 지정한 "이름"으로 나타납니다.
인스펙터에서 [ContextMenu] 특성이 추가된 해당 컴포넌트를 선택하고 마우스 오른쪽 버튼을 클릭하면 해당 "컨텍스트 메뉴"가 표시되고, 메서드를 선택하면 해당 메서드가 실행됩니다.
[ContextMenu("ApplyCustomColors")]
public void ApplyCustomColors()
{
foreach (Preset debugPreset in debugPresets)
{
if (debugPreset != null)
{
DebugUtils.AddCustomColor(debugPresets);
}
}
}
위 예시 코드를 보면 ApplyCustomColors가 컨텍스트에 표기될 이름입니다.