BuildPipeline.BuildAssetBundles Проблема

Программирование на Юнити.

BuildPipeline.BuildAssetBundles Проблема

Сообщение annak1n 30 май 2018, 14:21

Добрый день, прошу помощи у знатоков.
Уже неделю мучаюсь и не могу разобраться уже кучу мануалов выкурил и так не получается решить проблему.
Есть задача сделать экспорт Ассетов, на версии Юнити 5.Х всё работает, но решил перейти на Юнити 2017 и тут вывалилась проблема с Экспортом Ассетов.
Код который работает в версии 5.Х
Синтаксис:
Используется csharp
[MenuItem("Publish/Build Publish AssetBundles")]  
            static void ExportResourceAutoAll()
                {
                        AssetDatabase.DeleteAsset("Assets/StreamingAssets");
                        Directory.CreateDirectory("Assets/StreamingAssets");
                       
                        currentScene = false;
                        ExportXML();
                       
                        List<FileInfo> lst = new List<FileInfo>();
                        getPrefabs(new DirectoryInfo(Application.dataPath), lst);
                       
                        foreach(FileInfo NextFile in lst)
                        {
                                string fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(NextFile.Name);//
                    string path = "Assets/StreamingAssets/" + fileNameWithoutExtension + ".unity3d";
                               
                                string[] res = Regex.Split(NextFile.FullName, "Assets");
                                string path1 = "";
                                for(int i=1; i<res.Length; i++)
                                {
                                        path1 += "Assets";
                                        path1 += res[i];
                                }
                       
                                Object t = AssetDatabase.LoadMainAssetAtPath(path1);
                                Debug.Log("path=" + path1);
                                Debug.Log("Object=" + t);
                       
                                try
                                {
                // Build the resource file from the active selection.  
                        BuildPipeline.BuildAssetBundles(t, null, path);
                                        // BuildPipeline.BuildAssetBundle(t, null, path, BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets);
                                }catch(System.Exception ex)
                                {
                                        Debug.LogError(ex.Message.ToString());
                                }
                        }
                       
                        lst.Clear();
                        getScenes(new DirectoryInfo(Application.dataPath), lst);
                        List<string> skyboxres = new List<string>();
                       
                        foreach(FileInfo NextFile in lst)
                        {
                                string fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(NextFile.FullName);
                    if(fileNameWithoutExtension == "go" || fileNameWithoutExtension == "gameui")
                        continue;
                               
                                string[] res = Regex.Split(NextFile.FullName, "Assets");
                                string name = "Assets" + res[1];
                               
             
                                EditorApplication.OpenScene(name);
                               
                                if(RenderSettings.skybox != null)
                                {
                                        bool created = false;
                                        foreach(string mname in skyboxres)
                                        {
                                                if(RenderSettings.skybox.name == mname)
                                                {
                                                        created = true;
                                                        break;
                                                }
                                        }
                                       
                                        if(created == false)
                                        {
                                                skyboxres.Add(RenderSettings.skybox.name);
                                    string path = "Assets/StreamingAssets/" + RenderSettings.skybox.name.Replace(" ", "_") + ".unity3d";
                                                BuildPipeline.BuildAssetBundle(RenderSettings.skybox, null, path);  
                                        }
                                }
                        }
               
                        lst.Clear();
                        getUnity3ds(new DirectoryInfo(Application.dataPath), lst);
                        foreach(FileInfo NextFile in lst)
                        {
                                string fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(NextFile.FullName);
                                System.IO.File.Copy(NextFile.FullName, "Assets/StreamingAssets/" + fileNameWithoutExtension + ".unity3d");
                        }
                       
            Debug.Log("Everything built successfully!");
            EditorUtility.DisplayDialog("Everything built successfully!", "Everything built successfully!", " OK");
            }
 


В Юнити 2017 ошибки вываливаются тут:
Синтаксис:
Используется csharp
BuildPipeline.BuildAssetBundles(t, null, path);


тут
Синтаксис:
Используется csharp
BuildPipeline.BuildAssetBundle(RenderSettings.skybox, null, path);


Тут проблема в том что в 2017 изменили немного свойства BuildPipeline.BuildAssetBundle
Теперь должно быть BuildPipeline.BuildAssetBundles
Ребята направьте на путь истенный...
Аватара пользователя
annak1n
UNец
 
Сообщения: 9
Зарегистрирован: 17 май 2018, 15:49
Откуда: Германия

Re: BuildPipeline.BuildAssetBundles Проблема

Сообщение jetyb 31 май 2018, 07:42

Примерно такой мой код
Синтаксис:
Используется csharp
            //List<UnityEngine.Object> objects; //объекты из юнити текстуры, префабы, мыши и т.д
                var assetBundleBuild = new AssetBundleBuild
                {
                    assetBundleName = infoFile.Areas[areaComboBox.SelectedItemIndex].Name, //имя файла
                    assetNames = objects.Select(o => AssetDatabase.GetAssetPath(o)).ToArray()
                };
                var options = BuildAssetBundleOptions.UncompressedAssetBundle | BuildAssetBundleOptions.IgnoreTypeTreeChanges;
                BuildPipeline.BuildAssetBundles("assetbundles", new[] {assetBundleBuild}, options,
                    BuildTarget.StandaloneWindows64);
 
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5