2014年2月26日 星期三

Unity AssetBundle 建立 C#

1.於Unity Assets下建立一資料夾Script。
2.建立Script檔,檔名自取範例為ExportASSETbundle.cs,將此檔置於Script資料夾中。

內容程式碼如下:

using UnityEngine;
using System.Collections;
using System.IO;
using UnityEditor;


class ExportAssetBundle
{

[MenuItem("Assetbundle/Build APP AssetBundle")]
    static void ExportResource()
    {
        //打開保存面板,取得使用者選取的路俓
        string path = EditorUtility.SaveFilePanel("Save Resource", "", "New Resource", "assetbundle");

        if (path.Length != 0)
        {
            // 選擇要保存的對象 
            Object[] selection = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);
            //打包
#if UNITY_ANDROID
BuildPipeline.BuildAssetBundle(Selection.activeObject, selection, path, BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets, BuildTarget.Android);
#elif UNITY_IPHONE
BuildPipeline.BuildAssetBundle(Selection.activeObject, selection, path, BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets, BuildTarget.iPhone);
Debug.Log("iphone手機平台AssetBundle格式");
#elif UNITY_WP8
BuildPipeline.BuildAssetBundle(Selection.activeObject, selection, path, BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets, BuildTarget.WP8Player);
Debug.Log("wp手機平台AssetBundle格式");
#else
BuildPipeline.BuildAssetBundle(Selection.activeObject, selection, path, BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets);
Debug.Log("非手機平台AssetBundle格式");
#endif          
        }
else
{
Debug.Log(path + "AssetBundle建立失敗");
}
    }


[MenuItem("Assetbundle/Build Scene")]
    static void ExportScene()
    {
// 打開保存面板,取得使用者選取的路俓
        string path = EditorUtility.SaveFilePanel("Save Resource", "", "New Resource", "unity3d");

        if (path.Length != 0)
        {
// 選擇要保存的對象 
            //Object[] selection = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);
            string[] scenes = { "Assets/scene1.unity" };
            //打包  
            BuildPipeline.BuildPlayer(scenes, path, BuildTarget.StandaloneWindows, BuildOptions.BuildAdditionalStreamedScenes);
        }
    }
}

3.執行後,Unity面版會多一項Assetbundle選項,裡面有二項功能,一個是打包資源/文件類檔的Build APP AssetBundle,一項是打包Scence的Build Scene。

4.選取要打包目標,可複選(Sence不可),選取面版功能,設定打包位置及檔名,執行即完成。

5.使用請於File  > Build Setting.. 選擇對應平台,範例中有設三平台,(Android/iphone/winphone )再進行打包操作。

沒有留言:

張貼留言