Unity Asset Database 배칭 활용 가이드
이 문서는 Unity의 Asset Database에서 배칭을 사용하여 에셋을 효율적으로 관리하는 방법에 대해 설명합니다. 배칭 사용 시 성능이 향상되고 불필요한 처리 시간을 단축할 수 있습니다.
목차
- 배칭 개요
- AssetDatabase 메서드
- 배칭 활용 예제
- 에셋 편집에 try…finally 사용
- 참고 사항
1. 배칭 개요
배칭을 사용하면 에셋 변경 시 발생하는 시간과 처리 작업을 줄일 수 있습니다. 코드에서 여러 개의 에셋을 변경할 때 Unity는 기본적으로 각 변경 사항에 대해 처리 후 새로고침을 수행합니다. 그러나 배칭을 사용하면 작업 그룹을 한 번에 처리하도록 설정할 수 있습니다.
2. AssetDatabase 메서드
에셋 데이터베이스에서 배칭을 관리하기 위해 사용할 수 있는 두 가지 주요 메서드는 다음과 같습니다.
| 메서드 | 설명 |
|---|---|
| AssetDatabase.StartAssetEditing | 에셋 편집을 시작하여 에셋 데이터베이스를 일시 정지 상태로 전환합니다. |
| AssetDatabase.StopAssetEditing | 모든 에셋 변경 후 호출하여 데이터베이스의 정상적인 동작을 재개합니다. |
이 두 메서드는 내부적으로 카운터를 사용하여 중첩 호출을 관리합니다. 예를 들어, StartAssetEditing을 여러 번 호출했다면, 그 수만큼 StopAssetEditing을 호출해야 합니다.
3. 배칭 활용 예제
다음은 배칭을 사용하여 여러 작업을 처리하는 예제입니다.
using UnityEditor;
public class StartStopAssetEditingExample : MonoBehaviour
{
[MenuItem("APIExamples/StartStopAssetEditing")]
static void CallAssetDatabaseAPIsBetweenStartStopAssetEditing()
{
try
{
AssetDatabase.StartAssetEditing();
AssetDatabase.CopyAsset("Assets/Asset1.txt", "Assets/Text/Asset1.txt");
AssetDatabase.MoveAsset("Assets/Asset2.txt", "Assets/Text/Asset2.txt");
AssetDatabase.DeleteAsset("Assets/Asset3.txt");
}
finally
{
AssetDatabase.StopAssetEditing();
}
}
}
위 예제에서는 StartAssetEditing으로 편집을 시작하고, 여러 개의 에셋을 복사, 이동, 삭제한 후 StopAssetEditing으로 정상 상태로 복귀합니다.
4. 에셋 편집에 try…finally 사용
try…finally 블록을 사용하면 예외 발생 시에도 StopAssetEditing이 호출되도록 보장할 수 있습니다.
이렇게 하면 에디터가 비정상적으로 상태가 유지되는 것을 방지할 수 있습니다. 예를 들어, try 블록 안에 에셋 수정을 넣고, finally 블록 안에 StopAssetEditing를 배치하여, 문제가 생기더라도 에셋 데이터베이스의 상태가 항상 복원되도록 해야 합니다.
5. 참고 사항
StartAssetEditing을 호출한 후에는 반드시StopAssetEditing을 호출해야하며, 안 할 경우 에디터가 응답하지 않을 수 있습니다.- 호출한 메서드의 카운터가 0 미만으로 내려가지 않도록 주의해야 합니다. 이를 위반하면 오류가 발생합니다.
이 가이드는 Unity에서 Asset Database를 효율적으로 사용하는 방법에 대한 기본적인 이해를 제공하며, 적절한 배칭을 통해 성능을 극대화 할 수 있습니다.