Ejemplo n.º 1
0
    static protected void OnPostHeaderGUI(Editor editor)
    {
        var settings = AddressableAssetSettings.GetDefault();

        var path = AssetDatabase.GetAssetOrScenePath(editor.target);

        if (!ValidatePath(path))
        {
            return;
        }

        var guidStr = AssetDatabase.AssetPathToGUID(path);

        if (string.IsNullOrEmpty(guidStr))
        {
            return;
        }
        var guid = new GUID(guidStr);

        var entry = settings.GetEntry(guid);

        GUILayout.BeginHorizontal();
        //Undo.RegisterCompleteObjectUndo(settings, "AddressableAssetSettings");
        if (GUILayout.Toggle(entry.active, addressableAssetToggleText, GUILayout.Width(120)))
        {
            if (!entry.active)
            {
                SetEntryWithUndo(settings, entry = new AddressableAssetEntry(guid, entry.address, true, entry.flags));
            }
        }
        else
        {
            if (entry.active)
            {
                SetEntryWithUndo(settings, entry = new AddressableAssetEntry(guid, entry.address, false, entry.flags));
            }
        }

        if (entry.active)
        {
            var displayAddress = string.IsNullOrEmpty(entry.address) ? AssetDatabase.GUIDToAssetPath(guidStr) : entry.address;
            var address        = EditorGUILayout.DelayedTextField("", displayAddress);
            if (address != displayAddress)
            {
                SetEntryWithUndo(settings, new AddressableAssetEntry(entry.guid, address == AssetDatabase.GUIDToAssetPath(guidStr) ? string.Empty : address, entry.active, entry.flags));
            }
            var flags = (AddressableAssetEntryFlags)EditorGUILayout.EnumMaskField("Flags", (AddressableAssetEntryFlags)entry.flags);
            if (flags != (AddressableAssetEntryFlags)entry.flags)
            {
                SetEntryWithUndo(settings, new AddressableAssetEntry(entry.guid, entry.address, entry.active, (int)flags));
            }
        }
        GUILayout.EndHorizontal();
    }
Ejemplo n.º 2
0
    public static void BuildAssetBundles()
    {
        var outputPath = bundleBuildPath;

        if (!Directory.Exists(outputPath))
        {
            Directory.CreateDirectory(outputPath);
        }

        var results = CompileScripts();

        var settings = new BuildSettings();

        settings.target       = EditorUserBuildSettings.activeBuildTarget;
        settings.group        = EditorUserBuildSettings.selectedBuildTargetGroup;
        settings.typeDB       = results.typeDB;
        settings.outputFolder = outputPath;

        SetupAssetVariantMapsAsset();
        var input = BuildInterface.GenerateBuildInput();

        BuildInput addressableInput;

        AddressableAssetSettings.GetDefault().GenerateBuildInput(out addressableInput);

        //input = addressableInput.Merge(input);

        BuildCommandSet commands;

        if (AssetBundleBuildPipeline.GenerateCommandSet(settings, input, out commands))
        {
            BuildOutput output;
            if (AssetBundleBuildPipeline.ExecuteCommandSet(settings, commands, out output))
            {
                var bundlesToCopy = new List <string>(output.results.Select(x => x.assetBundleName));
                CopyBundlesToStreamingAssets(bundlesToCopy);

                CreateContentCatalog(commands);
            }
        }
    }