Unity에서 ExecuteInEditMode를 사용하여 에디터 모드에서 스크립트 실행하기
Unity에서 게임 개발을 하다 보면 때때로 에디터 모드에서도 스크립트를 실행하고 싶을 때가 있습니다. 이러한 기능을 가능하게 해주는 것이 바로 ExecuteInEditMode 특성입니다. 이 블로그 포스트에서는 ExecuteInEditMode를 사용하여 에디터 모드에서도 스크립트를 실행하는 방법과 이를 활용하는 몇 가지 유용한 예제에 대해 설명하겠습니다.
ExecuteInEditMode란 무엇인가?
ExecuteInEditMode는 Unity에서 제공하는 특성(Attribute)으로, 스크립트가 에디터 모드에서도 실행될 수 있도록 합니다. 기본적으로 Unity의 MonoBehaviour 스크립트는 플레이 모드에서만 실행되지만, ExecuteInEditMode 특성을 사용하면 에디터 모드에서도 동일한 스크립트를 실행할 수 있습니다.
ExecuteInEditMode 사용법
간단한 사용법은 매우 직관적입니다. 스크립트의 클래스 선언 위에 [ExecuteInEditMode] 특성을 추가하면 됩니다.
using UnityEngine;
[ExecuteInEditMode]
public class ExampleScript : MonoBehaviour
{
void Update()
{
Debug.Log("This runs in edit mode too");
}
}
위의 예제에서 Update 메서드는 플레이 모드와 에디터 모드 모두에서 실행됩니다.
추가적으로, 스크립트가 항상 실행되는 것을 방지하고 싶다면 Update 대신 OnValidate 메서드를 사용하여 오브젝트가 변경될 때만 위치를 조정할 수 있습니다.
using UnityEngine;
[ExecuteInEditMode]
public class ValidateTest : MonoBehaviour
{
void OnValidate()
{
// 작성
}
}
ExecuteInEditMode를 활용한 예제
게임 오브젝트 자동 배치
게임 개발 중 여러 개의 오브젝트를 정렬하거나 배치할 때도 ExecuteInEditMode를 유용하게 사용할 수 있습니다. 예를 들어, 특정 간격으로 오브젝트를 배치하는 스크립트를 작성해 보겠습니다.
using UnityEngine;
[ExecuteInEditMode]
public class ObjectArranger : MonoBehaviour
{
public GameObject prefab;
public int count = 10;
public float spacing = 2.0f;
void OnValidate()
{
ArrangeObjects();
}
void ArrangeObjects()
{
if (prefab == null) return;
// 기존 자식 오브젝트 삭제
foreach (Transform child in transform)
{
DestroyImmediate(child.gameObject);
}
// 새 오브젝트 배치
for (int i = 0; i < count; i++)
{
GameObject newObj = Instantiate(prefab, transform);
newObj.transform.localPosition = new Vector3(i * spacing, 0, 0);
}
}
}
이 스크립트는 OnValidate 메서드를 사용하여 Inspector에서 값이 변경될 때마다 오브젝트를 자동으로 배치합니다. ExecuteInEditMode와 함께 사용하여 에디터 모드에서도 즉시 변화를 확인할 수 있습니다.
ExecuteInEditMode의 장점
- 즉각적인 피드백: 에디터 모드에서도 스크립트가 실행되기 때문에 즉각적인 피드백을 받을 수 있습니다.
- 디버깅 용이: 플레이 모드에 들어가지 않고도 스크립트를 디버깅할 수 있습니다.
- 생산성 향상: 반복적인 작업을 자동화하여 개발 시간을 절약할 수 있습니다.
주의사항
ExecuteInEditMode를 사용할 때는 몇 가지 주의사항이 필요합니다.
- 퍼포먼스: 에디터 모드에서도 스크립트가 계속 실행되므로, 퍼포먼스에 영향을 줄 수 있습니다. 따라서 무거운 연산은 피하는 것이 좋습니다.
- 데이터 변경: 에디터 모드에서 실행되는 스크립트가 게임 데이터를 변경할 수 있으므로, 중요한 데이터는 조심스럽게 다뤄야 합니다.
결론
Unity에서 ExecuteInEditMode를 사용하면 에디터 모드에서도 스크립트를 실행할 수 있어 개발 과정에서 유용하게 활용할 수 있습니다. 오브젝트의 위치 조정, 자동 배치, 디버깅 등 다양한 용도로 사용할 수 있으며, 이를 통해 개발 효율을 크게 높일 수 있습니다. 이 포스트가 Unity 개발자들에게 도움이 되기를 바랍니다.
추가적인 질문이나 도움이 필요하시면 언제든지 문의해 주세요! Happy coding!
'Unity > Manual' 카테고리의 다른 글
Unity에서 Collider 사용 가이드 (0) | 2024.06.12 |
---|---|
Unity에서 SpriteRenderer의 텍스쳐 크기가 다를 때 화면 해상도와 크기를 일치시키는 방법 (0) | 2024.06.12 |
Unity에서 모바일 기기와 GUI 호환성을 맞추기 위한 방법 (0) | 2024.06.12 |
Unity에서 화면 해상도에 따라 오브젝트의 위치를 화면 하단으로 맞추는 방법 (0) | 2024.06.12 |
Unity 모바일 환경 화면 회전 고정 방법 (0) | 2024.06.12 |