internal static bool TryGetSettings(out ApexSettings settings) { if (_instance != null) { settings = _instance; return(true); } var apexRoot = AssetPath.GetApexRoot(false); var dataFolder = AssetPath.GetApexDataFolder(false); var relativeDataFolder = AssetPath.GetApexDataFolder(true); string settingsPath = AssetPath.Combine(relativeDataFolder, "ApexSettings.asset"); AssetPath.EnsurePath(relativeDataFolder); _instance = AssetDatabase.LoadAssetAtPath(settingsPath, typeof(ApexSettings)) as ApexSettings; bool settingsFound = (_instance != null); if (!settingsFound) { _instance = ScriptableObject.CreateInstance <ApexSettings>(); AssetDatabase.CreateAsset(_instance, settingsPath); AssetDatabase.SaveAssets(); } _instance.rootFolder = apexRoot; _instance.dataFolder = dataFolder; _instance.relativeDataFolder = relativeDataFolder; settings = _instance; return(settingsFound); }