상상 너머 그 무언가...

에셋번들 만드는 방법 (Unity Pro only) ( BuildPipeline.BuildAssetBundle ) 본문

개발관련(Development)/유니티3D(Unity3D)

에셋번들 만드는 방법 (Unity Pro only) ( BuildPipeline.BuildAssetBundle )

Clack 2011. 11. 15. 14:35

프로젝트 안에 에셋번들 만들수 있게 해주는 스크립트가 없으면 아래 이미지 처럼 Assets메뉴안에 별다른 메뉴가 없지만


에셋번들 스크립트가 프로젝트 안에 포함되어 있다면 아래와 같이 Assets메뉴안에 에셋번들 파일을 만들어 주는 메뉴가 두가지가  보여진다.


ExportAssetBundles.cs 코드
using UnityEngine;
using UnityEditor;

public class ExportAssetBundles {
    [MenuItem("Assets/Build AssetBundle From Selection - Track dependencies")]
    static void ExportResource () {
        // Bring up save panel
        string path = EditorUtility.SaveFilePanel ("Save Resource", "", "New Resource", "unity3d");
        if (path.Length != 0) {
            // Build the resource file from the active selection.
            Object[] selection = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);
            BuildPipeline.BuildAssetBundle(Selection.activeObject, selection, path, BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets);
            Selection.objects = selection;
        }
    }
    [MenuItem("Assets/Build AssetBundle From Selection - No dependency tracking")]
    static void ExportResourceNoTrack () {
        // Bring up save panel
        string path = EditorUtility.SaveFilePanel ("Save Resource", "", "New Resource", "unity3d");
        if (path.Length != 0) {
            // Build the resource file from the active selection.
            BuildPipeline.BuildAssetBundle(Selection.activeObject, Selection.objects, path);
        }
    }
}

위 코드가 들어있는  C# 스크립트가 Project 패널안에 포함되어져 있다면 에셋번들을 만들수 있는 메뉴를 사용할 수 있게된다.

javascript로 작성된 에셋번들 스크립트는 프로젝트 패널의 Assets/Editor 폴더에 해당 스크립트를 넣어줘야 동작한다.
C#의 경우 using UnityEditor; 를 써주면 폴더에 상관 없이 사용할 수 있게된다.

 
BuildAssetBundleOptions이 포함되어져 호출하는 ' Track dependencies' 는 해당 오브젝트에 연결된 메쉬나 애니메이션클립 등등
오브젝트에 포함된 모든 에셋들을  포함하여 에셋번들로 빌드하고
'No dependency tracking' 는 선택된 오브젝트만 에셋번들로 빌드한다.