Пример #1
0
        public static void BuildBundle(string name, string[] assetPaths)
        {
            Functions.CreateFolderPath("Assets/StreamingAssets");
            UnityEditor.AssetBundleBuild[] buildMap = new UnityEditor.AssetBundleBuild[1];
            var bundle = new UnityEditor.AssetBundleBuild()
            {
                assetBundleName = name,
                assetNames      = assetPaths
            };

            buildMap[0] = bundle;

            UnityEditor.BuildPipeline.BuildAssetBundles(
                Application.streamingAssetsPath,
                buildMap,
                UnityEditor.BuildAssetBundleOptions.None,
                UnityEditor.BuildTarget.StandaloneWindows
                );
        }
Пример #2
0
        /** コンバート。アセットバンドル作成。
         *
         *      a_param			: パラメータ。
         *      a_assets_path	: アセットフォルダからの相対パス。
         *      a_sheet			: JSONシート。
         *
         */
        public static void Convert_CreateAssetBundle(string a_param, Fee.File.Path a_assets_path, Fee.JsonItem.JsonItem[] a_sheet)
        {
            try{
                if (a_sheet != null)
                {
                    //アセットバンドルリスト作成

                    /*
                     * {
                     *      "se.assetbundle" : {
                     *              {
                     *                      "SE" :
                     *                      "Editor/Test12/se"
                     *              },
                     *              {
                     *                      "UI_BUTTON" :
                     *                      "Common/Texture/ui_button"
                     *              },
                     *              {
                     *                      "IMAGE" :
                     *                      "Common/Texture/image.jpg"
                     *              },
                     *
                     *              ...
                     *      },
                     *      "xx.assetbundle" : {
                     *
                     *      },
                     *      ...
                     * }
                     */
                    System.Collections.Generic.Dictionary <string, System.Collections.Generic.Dictionary <string, ListItem> > t_assetbundlelist = new System.Collections.Generic.Dictionary <string, System.Collections.Generic.Dictionary <string, ListItem> >();
                    {
                        for (int ii = 0; ii < a_sheet.Length; ii++)
                        {
                            if (a_sheet[ii] != null)
                            {
                                System.Collections.Generic.List <ListItem> t_sheet = Fee.JsonItem.Convert.JsonItemToObject <System.Collections.Generic.List <ListItem> >(a_sheet[ii]);
                                if (t_sheet != null)
                                {
                                    for (int jj = 0; jj < t_sheet.Count; jj++)
                                    {
                                        if (string.IsNullOrEmpty(t_sheet[jj].data_assetbundle_name) == false)
                                        {
                                            switch (t_sheet[jj].data_command)
                                            {
                                            case Convert_DataSheet.DATACOMMAND_RESOURCES_PREFAB:
                                            case Convert_DataSheet.DATACOMMAND_RESOURCES_TEXTURE:
                                            case Convert_DataSheet.DATACOMMAND_RESOURCES_TEXT:
                                            {
                                                System.Collections.Generic.Dictionary <string, ListItem> t_item_list = null;
                                                if (t_assetbundlelist.TryGetValue(t_sheet[jj].data_assetbundle_name, out t_item_list) == false)
                                                {
                                                    t_item_list = new System.Collections.Generic.Dictionary <string, ListItem>();
                                                    t_assetbundlelist.Add(t_sheet[jj].data_assetbundle_name, t_item_list);
                                                }
                                                t_item_list.Add(t_sheet[jj].data_id, t_sheet[jj]);
                                            } break;

                                            default:
                                            {
                                                Tool.Assert(false);
                                            } break;
                                            }
                                        }
                                        else
                                        {
                                            //アセットバンドルなし。
                                        }
                                    }
                                }
                                else
                                {
                                    Tool.Assert(false);
                                }
                            }
                        }
                    }

                    switch (a_param)
                    {
                    case Convert_DataSheet.DATAPARAM_DUMMY:
                    {
                        //ダミー。

                        foreach (System.Collections.Generic.KeyValuePair <string, System.Collections.Generic.Dictionary <string, ListItem> > t_pair in t_assetbundlelist)
                        {
                            Fee.AssetBundleList.DummryAssetBundle t_dummy_assetbundle = new AssetBundleList.DummryAssetBundle();

                            //asset_list
                            t_dummy_assetbundle.asset_list = new System.Collections.Generic.Dictionary <string, string>();

                            //key_list
                            System.Collections.Generic.List <string> t_key_list = new System.Collections.Generic.List <string>(t_pair.Value.Keys);
                            for (int ii = 0; ii < t_key_list.Count; ii++)
                            {
                                //asset_name
                                string t_asset_name = t_key_list[ii];

                                ListItem t_listitem;
                                if (t_pair.Value.TryGetValue(t_asset_name, out t_listitem) == true)
                                {
                                    t_dummy_assetbundle.asset_list.Add(t_asset_name, t_listitem.data_path);
                                }
                                else
                                {
                                    Tool.Assert(false);
                                }
                            }

                            Fee.File.Path t_path       = new File.Path(a_assets_path.GetPath() + t_pair.Key + ".json");
                            string        t_jsonstring = Fee.JsonItem.Convert.ObjectToJsonString <Fee.AssetBundleList.DummryAssetBundle>(t_dummy_assetbundle);
                            EditorTool.Utility.WriteTextFile(Fee.File.Path.CreateAssetsPath(t_path), t_jsonstring, true);
                        }
                    } break;

                    case Convert_DataSheet.DATAPARAM_STANDALONEWINDOWS:
                    case Convert_DataSheet.DATAPARAM_ANDROID:
                    case Convert_DataSheet.DATAPARAM_WEBGL:
                    case Convert_DataSheet.DATAPARAM_IOS:
                    {
                        //アセットバンドル。

                        //t_assetbundle_build
                        UnityEditor.AssetBundleBuild[] t_assetbundle_build = new UnityEditor.AssetBundleBuild[t_assetbundlelist.Count];
                        {
                            int t_count = 0;
                            foreach (System.Collections.Generic.KeyValuePair <string, System.Collections.Generic.Dictionary <string, ListItem> > t_pair in t_assetbundlelist)
                            {
                                //パック名。
                                t_assetbundle_build[t_count].assetBundleName = t_pair.Key;

                                //assetBundleVariant
                                t_assetbundle_build[t_count].assetBundleVariant = null;

                                //key_list
                                System.Collections.Generic.List <string> t_key_list = new System.Collections.Generic.List <string>(t_pair.Value.Keys);
                                t_assetbundle_build[t_count].assetNames = new string[t_key_list.Count];

                                                                        #if (UNITY_5)
                                //未対応。
                                                                        #else
                                t_assetbundle_build[t_count].addressableNames = new string[t_key_list.Count];
                                                                        #endif

                                for (int ii = 0; ii < t_key_list.Count; ii++)
                                {
                                    ListItem t_listitem;
                                    if (t_pair.Value.TryGetValue(t_key_list[ii], out t_listitem) == true)
                                    {
                                        string t_asset_path = null;
                                        {
                                            try{
                                                UnityEngine.Object t_object = UnityEngine.Resources.Load(t_listitem.data_path);
                                                if (t_object != null)
                                                {
                                                    t_asset_path = UnityEditor.AssetDatabase.GetAssetPath(t_object);
                                                }
                                                else
                                                {
                                                    Tool.Assert(false);
                                                }
                                            }catch (System.Exception t_exception) {
                                                Tool.DebugReThrow(t_exception);
                                            }
                                        }

                                        //assetNames
                                        t_assetbundle_build[t_count].assetNames[ii] = t_asset_path;

                                        //addressableNames
                                                                                        #if (UNITY_5)
                                        //未対応。
                                                                                        #else
                                        t_assetbundle_build[t_count].addressableNames[ii] = t_key_list[ii];
                                                                                        #endif
                                    }
                                    else
                                    {
                                        Tool.Assert(false);
                                    }
                                }

                                t_count++;
                            }
                        }

                        //BuildAssetBundleOptions
                        UnityEditor.BuildAssetBundleOptions t_option = UnityEditor.BuildAssetBundleOptions.ForceRebuildAssetBundle;

                        //BuildTarget
                        UnityEditor.BuildTarget t_buildtarget = UnityEditor.BuildTarget.StandaloneWindows;
                        switch (a_param)
                        {
                        case Convert_DataSheet.DATAPARAM_STANDALONEWINDOWS:
                        {
                            t_buildtarget = UnityEditor.BuildTarget.StandaloneWindows;
                        } break;

                        case Convert_DataSheet.DATAPARAM_ANDROID:
                        {
                            t_buildtarget = UnityEditor.BuildTarget.Android;
                        } break;

                        case Convert_DataSheet.DATAPARAM_WEBGL:
                        {
                            t_buildtarget = UnityEditor.BuildTarget.WebGL;
                        } break;

                        case Convert_DataSheet.DATAPARAM_IOS:
                        {
                            t_buildtarget = UnityEditor.BuildTarget.iOS;
                        } break;

                        default:
                        {
                            Tool.Assert(false);
                        } break;
                        }

                        if (System.IO.Directory.Exists("Assets/" + a_assets_path.GetPath()) == false)
                        {
                            System.IO.Directory.CreateDirectory("Assets/" + a_assets_path.GetPath());
                        }

                        UnityEditor.BuildPipeline.BuildAssetBundles("Assets/" + a_assets_path.GetPath(), t_assetbundle_build, t_option, t_buildtarget);
                    } break;

                    default:
                    {
                        Tool.Assert(false);
                    } break;
                    }
                }
                else
                {
                    Tool.Assert(false);
                }
            }catch (System.Exception t_exception) {
                Tool.DebugReThrow(t_exception);
            }
        }