using UnityEngine; using Guru; using NUnit.Framework; namespace Guru.Editor { using System.IO; using UnityEditor; using Guru.LitJson; public class EditorGuruServiceIO { private static readonly string DefaultFileName = "guru-service"; private static string DefaultFilePath = Path.GetFullPath(Path.Combine(Application.dataPath, $"{DefaultFileName}.json")); internal static string EmbededServiceFilePath = ""; /// /// 加载配置 /// /// public static GuruServicesConfig LoadConfig() { var a = AssetDatabase.FindAssets($"*{DefaultFileName}* t:TextAsset"); if (a == null || a.Length == 0) { Debug.Log($"--- Can't ind guru-services file"); } else { var p = AssetDatabase.GUIDToAssetPath(a[0]); var fp = Path.GetFullPath(p); if (File.Exists(fp)) EmbededServiceFilePath = fp; var t = AssetDatabase.LoadAssetAtPath(p); // Debug.Log($"--- find services file:{p} \n{t.text}"); return JsonMapper.ToObject(t.text); } return null; } /// /// 保存配置 /// /// internal static void SaveConfig(GuruServicesConfig config = null) { if (config == null) { config = new GuruServicesConfig(); } var jw = new JsonWriter() { PrettyPrint = true, }; JsonMapper.ToJson(config, jw); var json = jw.ToString(); if (string.IsNullOrEmpty(EmbededServiceFilePath)) EmbededServiceFilePath = DefaultFilePath; File.WriteAllText(EmbededServiceFilePath, json); Debug.Log($"Save config to {EmbededServiceFilePath}"); } /// /// 创建空配置 /// /// internal static GuruServicesConfig CreateEmpty() { var cfg = new GuruServicesConfig(); cfg.version = 0; cfg.app_settings = new GuruAppSettings(); cfg.ad_settings = new GuruAdSettings(); cfg.adjust_settings = new GuruAdjustSettings(); cfg.fb_settings = new GuruFbSettings(); return cfg; } [Test] public static void Test_SaveConfig() { var cfg = CreateEmpty(); SaveConfig(cfg); } public static void DeployAppServiceFile() { var streamingPath = Application.streamingAssetsPath; if(!Directory.Exists(streamingPath)) Directory.CreateDirectory(streamingPath); var path = Path.Combine(streamingPath, $"{GuruSDK.ServicesConfigKey}.{GuruSDK.ServicesConfigExtension}"); var config = LoadConfig(); var from = EmbededServiceFilePath; if (string.IsNullOrEmpty(from) || !File.Exists(from)) // 文件不存在 { return; } if (null != config) { if (File.Exists(path)) File.Delete(path); Debug.Log($" --- setup {GuruSDK.ServicesConfigKey} file on streamingPath"); File.Copy(from, path); } } } }