コード例 #1
0
ファイル: AssetBundleBuildPanel.cs プロジェクト: 517752548/-
    static void BuildAssetBundles()
    {
        AssetBundleBuildConfig config = LoadAssetAtPath <AssetBundleBuildConfig>(savePath);

        if (config == null)
        {
            return;
        }


        AssetBundleBuilder5x builder = new AssetBundleBuilder5x(new FastAssetBundlePathResolver());

        builder.Begin();

        for (int i = 0; i < config.filters.Count; i++)
        {
            AssetBundleFilter f = config.filters[i];
            if (f.valid)
            {
                builder.AddRootTargets(new DirectoryInfo(f.path), new string[] { f.filter });
            }
        }

        builder.Export();
        builder.End();
    }
コード例 #2
0
    static void BuildAssetBundles()
    {
        AssetBundleBuildConfig config = AssetDatabase.LoadAssetAtPath <AssetBundleBuildConfig>(savePath);

        if (config == null)
        {
            return;
        }

#if UNITY_5
        ABBuilder builder = new AssetBundleBuilder5x(new AssetBundlePathResolver());
#else
        ABBuilder builder = new AssetBundleBuilder4x(new AssetBundlePathResolver());
#endif
        builder.SetDataWriter(config.depInfoFileFormat == AssetBundleBuildConfig.Format.Text ? new AssetBundleDataWriter() : new AssetBundleDataBinaryWriter());

        builder.Begin();

        for (int i = 0; i < config.filters.Count; i++)
        {
            AssetBundleFilter f = config.filters[i];
            if (f.valid)
            {
                builder.AddRootTargets(new DirectoryInfo(f.path), new string[] { f.filter });
            }
        }

        builder.Export();
        builder.End();
    }
コード例 #3
0
ファイル: AssetBundleBuildPanel.cs プロジェクト: 517752548/-
 void InitConfig()
 {
     _config = LoadAssetAtPath <AssetBundleBuildConfig>(savePath);
     if (_config == null)
     {
         _config = CreateInstance <AssetBundleBuildConfig>();
     }
 }
コード例 #4
0
ファイル: AssetBundleWindow.cs プロジェクト: heyangyang/UTest
 void InitConfig()
 {
     mConfig = ABBuilderTools.LoadAssetAtPath <AssetBundleBuildConfig>(ABBuilderTools.SavePath);
     if (mConfig == null)
     {
         mConfig = new AssetBundleBuildConfig();
     }
 }
コード例 #5
0
ファイル: ABBuilder.cs プロジェクト: heyangyang/UTest
    public void IntiConfig()
    {
        ReadConfig();
        AssetBundleBuildConfig buildConfig = ABBuilderTools.LoadAssetAtPath <AssetBundleBuildConfig>(ABBuilderTools.SavePath);

        for (int i = 0; i < buildConfig.filters.Count; i++)
        {
            AssetBundleFilter f = buildConfig.filters[i];
            AddRootTargets(new DirectoryInfo(f.path), f.type, f.filter.Split('|'));
        }
    }
コード例 #6
0
    //根据现有配置 建立Ab名字和Path的关系
    public static void BuildReleation()
    {
        AssetBundleBuildConfig assetBundleBuildConfig =
            AssetDatabase.LoadAssetAtPath <AssetBundleBuildConfig>(MPathUtils.ASSETBUNDLE_CONFIG_PATH);

        //下面这个Foreach 直接添加配置的Config信息到Dic里面
        foreach (var item in assetBundleBuildConfig.m_allFileDirAb)
        {
            if (m_allFileDirDic.ContainsKey(item.abName))
            {
                Debug.LogError("当前m_allFileDirDic里面已经有这个Ab名了");
            }
            else
            {
                m_allFileDirDic.Add(item.abName, item.abDir);
                m_AddedPathList.Add(item.abDir);
                m_EffectiveFile.Add(item.abDir);
            }
        }

        //1 首先找到配置文件夹下的所有文件
        //2 一次找到每个文件的依赖关系
        //3 去已添加的依赖
        string[] allFileGuids = AssetDatabase.FindAssets("t:prefab", assetBundleBuildConfig.m_allFilePath.ToArray());
        for (int i = 0; i < allFileGuids.Length; i++)
        {
            string     filePath   = AssetDatabase.GUIDToAssetPath(allFileGuids[i]);
            GameObject gameObject = AssetDatabase.LoadAssetAtPath <GameObject>(filePath);
            EditorUtility.DisplayCancelableProgressBar("Calculate Ab Releation", "ResPath :" + filePath, i / allFileGuids.Length);
            //找到这个文件的所有依赖项 找到的依赖项包括本身
            string[]      dependence           = AssetDatabase.GetDependencies(filePath);
            List <string> fileAllDependeceList = new List <string>();
            for (int z = 0; z < dependence.Length; z++)
            {
                if (!dependence[z].EndsWith(".cs") && !CheckPathIsAdded(dependence[z]))
                {
                    fileAllDependeceList.Add(dependence[z]);
                    m_AddedPathList.Add(dependence[z]);
                }
            }
            m_abWithDepenceDic.Add(gameObject.name, fileAllDependeceList);
            m_EffectiveFile.Add(filePath);
        }
    }
コード例 #7
0
    void OnGUI()
    {
        bool execBuild = false;

        if (config == null)
        {
            config = AssetDatabase.LoadAssetAtPath <AssetBundleBuildConfig>(savePath);
            if (config == null)
            {
                config = new AssetBundleBuildConfig();
            }
        }

        UpdateStyles();
        //tool bar
        GUILayout.BeginHorizontal(Styles.toolbar);
        {
            if (GUILayout.Button("Add", Styles.toolbarButton))
            {
                config.filters.Add(new AssetBundleFilter());
            }
            if (GUILayout.Button("Save", Styles.toolbarButton))
            {
                Save();
            }
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("Build", Styles.toolbarButton))
            {
                execBuild = true;
            }
        }
        GUILayout.EndHorizontal();

        //context
        GUILayout.BeginVertical();

        //format
        GUILayout.BeginHorizontal();
        {
            EditorGUILayout.PrefixLabel("DepInfoFileFormat");
            config.depInfoFileFormat = (AssetBundleBuildConfig.Format)EditorGUILayout.EnumPopup(config.depInfoFileFormat);
        }
        GUILayout.EndHorizontal();

        GUILayout.Space(10);

        for (int i = 0; i < config.filters.Count; i++)
        {
            AssetBundleFilter filter = config.filters[i];
            GUILayout.BeginHorizontal();
            {
                filter.valid = GUILayout.Toggle(filter.valid, "", GUILayout.ExpandWidth(false));
                filter.path  = GUILayout.TextField(filter.path, GUILayout.ExpandWidth(true));
                if (GUILayout.Button("Select", GUILayout.ExpandWidth(false)))
                {
                    string dataPath     = Application.dataPath;
                    string selectedPath = EditorUtility.OpenFolderPanel("Path", dataPath, "");
                    if (!string.IsNullOrEmpty(selectedPath))
                    {
                        if (selectedPath.StartsWith(dataPath))
                        {
                            filter.path = "Assets/" + selectedPath.Substring(dataPath.Length + 1);
                        }
                        else
                        {
                            ShowNotification(new GUIContent("不能在Assets目录之外!"));
                        }
                    }
                }
                filter.filter = GUILayout.TextField(filter.filter, GUILayout.Width(200));
                if (GUILayout.Button("X", GUILayout.ExpandWidth(false)))
                {
                    config.filters.RemoveAt(i);
                    i--;
                }
            }
            GUILayout.EndHorizontal();
        }
        GUILayout.EndVertical();

        //set dirty
        if (GUI.changed)
        {
            EditorUtility.SetDirty(config);
        }

        if (execBuild)
        {
            Build();
        }
    }