using System.IO; using Cysharp.Threading.Tasks; using Newtonsoft.Json; using Sirenix.OdinInspector; using Sirenix.Serialization; using Tools.ExcelResolver; using UnityEngine; using UnityEngine.AddressableAssets; public class Test : MonoBehaviour { private void Start() { Debug.Log($"start time: {Time.time}"); LoadMonsterUtil().Forget(); LoadJson().Forget(); LoadMonsters().Forget(); } private async UniTaskVoid LoadMonsterUtil() { await Addressables.LoadAssetAsync("Assets/_Project/ScriptableObject/Excel/monster/_monsterUtil.asset"); Debug.Log($"加载MonsterUtil成功{Time.time}"); } private async UniTaskVoid LoadJson() { var json = await Addressables.LoadAssetAsync("Assets/TestData.json"); Debug.Log($"成功获取到json文件 {Time.time}"); var monsterUtil = JsonConvert.DeserializeObject(json.text); Debug.Log($"反序列化成功 {Time.time}"); } private async UniTaskVoid LoadMonsters() { await Addressables.LoadAssetsAsync("monster", null); Debug.Log($"加载Monster成功{Time.time}"); } public monsterUtil monsterUtil; [Button] private void DataToJson() { var settings = new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore // 忽略循环引用 }; var json = JsonConvert.SerializeObject(monsterUtil, settings); var testDataPath = Application.dataPath + "/TestData.json"; File.WriteAllText(testDataPath, json); } }