using System; using System.IO; using UnityEditor.AddressableAssets.Settings; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.AddressableAssets.Initialization; namespace UnityEditor.AddressableAssets.Build.DataBuilders { /// /// Only saves the guid of the settings asset to PlayerPrefs. All catalog data is generated directly from the settings as needed. /// [CreateAssetMenu(fileName = nameof(BuildScriptFastMode) + ".asset", menuName = "Addressables/Content Builders/Use Asset Database (fastest)")] public class BuildScriptFastMode : BuildScriptBase { /// public override string Name { get { return "Use Asset Database (fastest)"; } } private bool m_DataBuilt; /// public override void ClearCachedData() { m_DataBuilt = false; } /// public override bool IsDataBuilt() { return m_DataBuilt; } /// protected override string ProcessGroup(AddressableAssetGroup assetGroup, AddressableAssetsBuildContext aaContext) { return string.Empty; } /// public override bool CanBuildData() { return typeof(T).IsAssignableFrom(typeof(AddressablesPlayModeBuildResult)); } /// protected override TResult BuildDataImplementation(AddressablesDataBuilderInput builderInput) { if (!AssetDatabase.TryGetGUIDAndLocalFileIdentifier(builderInput.AddressableSettings, out var guid, out long _)) { IDataBuilderResult res = new AddressablesPlayModeBuildResult() {Error = "Invalid Settings asset."}; return (TResult)res; } else { PlayerPrefs.SetString(Addressables.kAddressablesRuntimeDataPath, $"GUID:{guid}"); IDataBuilderResult res = new AddressablesPlayModeBuildResult() {OutputPath = "", Duration = 0}; m_DataBuilt = true; return (TResult)res; } } } }