Unity 스크립트화된 임포터 가이드

이 문서에서는 Unity의 스크립트화된 임포터(Scripted Importer) 기능에 대한 기본적인 내용과 활용 예제를 설명합니다. 스크립트화된 임포터는 Unity에서 지원하지 않는 파일 포맷을 사용자 정의로 지원할 수 있게 해줍니다.

스크립트화된 임포터란?

스크립트화된 임포터는 Unity의 스크립팅 API의 일부로, 사용자 정의 파일 포맷을 Unity에 통합하기 위해 C# 스크립트를 작성하는 기능입니다. 스크립트화된 임포터를 작성하면 특수한 파일 확장자를 처리할 수 있는 커스텀 임포터를 만들 수 있습니다.

기본 사용법

스크립트화된 임포터를 만들기 위해서는 ScriptedImporter 클래스를 상속받고, 생성자를 통해 처리할 파일 확장자를 등록해야 합니다. 아래는 cube라는 확장자를 처리하는 기본적인 임포터의 코드입니다.

using UnityEngine;
using UnityEditor.AssetImporters;
using System.IO;

[ScriptedImporter(1, "cube")]
public class CubeImporter : ScriptedImporter
{
    public float m_Scale = 1;

    public override void OnImportAsset(AssetImportContext ctx)
    {
        var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
        var position = JsonUtility.FromJson<Vector3>(File.ReadAllText(ctx.assetPath));

        cube.transform.position = position;
        cube.transform.localScale = new Vector3(m_Scale, m_Scale, m_Scale);

        ctx.AddObjectToAsset("main obj", cube);
        ctx.SetMainObject(cube);

        var material = new Material(Shader.Find("Standard"));
        material.color = Color.red;

        ctx.AddObjectToAsset("my Material", material);

        var tempMesh = new Mesh();
        DestroyImmediate(tempMesh);
    }
}

주요 메서드 설명

  • OnImportAsset: 에셋이 임포트될 때 호출되는 메서드입니다. 여기서 임포트할 게임 오브젝트와 머티리얼을 생성합니다.
  • ctx.AddObjectToAsset: 에셋으로 추가할 객체를 등록합니다.
  • ctx.SetMainObject: 메인 에셋을 설정합니다.

커스텀 인스펙터 만들기

스크립트화된 임포터에 대한 커스텀 에디터를 만들려면 ScriptedImporterEditor 클래스를 상속받아 OnInspectorGUI 메서드를 구현하면 됩니다. 아래 예제를 참고하세요.

using UnityEditor;
using UnityEditor.AssetImporters;
using UnityEngine;

[CustomEditor(typeof(CubeImporter))]
public class CubeImporterEditor: ScriptedImporterEditor
{
    public override void OnInspectorGUI()
    {
        var colorShift = new GUIContent("Color Shift");
        var prop = serializedObject.FindProperty("m_ColorShift");
        EditorGUILayout.PropertyField(prop, colorShift);
        base.ApplyRevertGUI();
    }
}

임포터 사용법

스크립트화된 임포터를 프로젝트에 추가한 후에는 일반적인 파일 임포트 방법을 사용할 수 있습니다. 에셋 파일을 프로젝트 폴더에 드래그 앤 드롭하거나, 메뉴에서 Asset > Import New Asset…을 선택하여 임포트할 수 있습니다.

임포트 시나리오

시나리오 설명
파일 드래그 앤 드롭 에셋 폴더에 지원되는 파일을 드래그하여 임포트
에셋 신규 임포트 Asset > Import New Asset… 메뉴 사용
에셋 재임포트 변화를 감지하여 자동으로 재임포트

실제 사례

  1. Alembic 임포터: Alembic 데이터 형식을 위한 스크립트화된 임포터가 존재합니다. 이 임포터는 복잡한 애니메이션 데이터를 Unity에 통합하는 데 사용됩니다.
  2. USD 임포터: USD 파일 형식을 지원하는 임포터로, 다양한 3D 소프트웨어에서 제작된 파일을 쉽게 임포트할 수 있습니다.

스케일과 같은 추가 속성을 사용자 정의하여 작업을 최적화할 수 있으며, 필요에 따라 다양한 형식으로 자신만의 임포터를 만들 수 있습니다.

결론

Unity의 스크립트화된 임포터는 다양한 파일 포맷을 통합하는 강력한 도구입니다. 이 기능을 통해 특정 형식의 데이터 파일을 사용할 수 있는 방법을 제공하며, 유연한 커스터마이징도 가능합니다. 스크립트화된 임포터를 활용하여 프로젝트에서 필요한 모든 유형의 에셋을 효율적으로 관리해 보세요.

Read more

Unity 매뉴얼 스크립팅 API 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 간단한 해설과 활용 예제들을 포함하고 있습니다. Unity는 게임 개발 플랫폼으로, 스크립팅 API를 통해 게임의 다양한 기능을 제어하고 수정할 수 있습니다. 버전 Unity 스크립팅 API는 여러 버전으로 제공됩니다. 주의 깊게 선택하여 사용하는 것이 중요합니다. 버전 설명 2023.2 최신 기능 및 버그 수정이 추가됨

By 이재협/실장/시스템개발실/PHYSIA

Unity 매뉴얼 스크립팅 API 설명서 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 정보를 제공하며, 버전에 따라 다르게 적용되는 내용들을 설명합니다. 본 문서에서는 주요 내용을 간단히 정리하고 활용 가능 예제를 통해 이해를 돕겠습니다. 기본 개념 Unity에서 스크립팅 API는 게임 오브젝트와 그들의 동작을 제어하기 위한 강력한 도구입니다. 이를 통해 게임의 로직, 물리 엔진, 애니메이션 및 사용자 인터페이스를

By 이재협/실장/시스템개발실/PHYSIA

Unity 스크립팅 API 가이드

이 문서는 Unity의 스크립팅 API에 대해 설명합니다. Unity는 게임 개발을 위한 인기 있는 엔진으로, 강력한 스크립팅 기능을 제공합니다. 이 가이드는 Unity에서 스크립트를 작성하고 사용하는 방법을 이해하는 데 도움을 드립니다. 목차 * Unity 스크립팅 소개 * 기본 스크립트 생성 * 스크립트 사용 예제 * 응용 프로그램 * 참고 자료 Unity 스크립팅 소개 Unity는 C# 프로그래밍 언어를

By 이재협/실장/시스템개발실/PHYSIA