diff --git a/Assets/Unity-Tools/Core/Util/ProfilerUtil.cs b/Assets/Unity-Tools/Core/Util/ProfilerUtil.cs new file mode 100644 index 0000000..949fcdf --- /dev/null +++ b/Assets/Unity-Tools/Core/Util/ProfilerUtil.cs @@ -0,0 +1,9 @@ +using Unity.Profiling; + +namespace Tools +{ + public static class ProfilerUtil + { + public static readonly ProfilerMarker MyMarker = new ProfilerMarker("MyCustomCode"); + } +} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Util/ProfilerUtil.cs.meta b/Assets/Unity-Tools/Core/Util/ProfilerUtil.cs.meta new file mode 100644 index 0000000..e3ad0d8 --- /dev/null +++ b/Assets/Unity-Tools/Core/Util/ProfilerUtil.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ab28fc99e92b409aadd67ec27519c3cc +timeCreated: 1737917311 \ No newline at end of file diff --git a/Assets/Unity-Tools/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataSO.cs b/Assets/Unity-Tools/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataSO.cs index 058d174..dfc0657 100644 --- a/Assets/Unity-Tools/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataSO.cs +++ b/Assets/Unity-Tools/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataSO.cs @@ -20,16 +20,10 @@ namespace Tools.ExcelResolver.Editor var worksheet = classCodeDataDictPair.Key; var classCodeData = classCodeDataDictPair.Value; - Type dataSOType = ExcelResolverUtil.GetOrCacheTypeByName(classCodeData.className); - - if (dataSOType == null) - { - Debug.LogError($"Class '{classCodeData.className}SO' not found. Please generate classes first (or check namespace)."); - return; - } + var dataName = $"{classCodeData.className}"; var path = $"{excelResolverConfig.SOPathRoot}/{classCodeData.className}/"; - string[] assetGuids = AssetDatabase.FindAssets($"t:{dataSOType}", new[] { path }); + string[] assetGuids = AssetDatabase.FindAssets($"t:{dataName}", new[] { path }); Dictionary originAssets = new(); for (int i = 0; i < assetGuids.Length; i++) { @@ -50,7 +44,7 @@ namespace Tools.ExcelResolver.Editor if (originAssets.ContainsKey(assetName)) { - set(originAssets[assetName], dataSOType, worksheet, row, classCodeData); + set(originAssets[assetName], worksheet, row, classCodeData); EditorUtility.SetDirty(originAssets[assetName]); Debug.Log($"刷新:{assetName}", originAssets[assetName]); result.Add(originAssets[assetName]); @@ -58,8 +52,8 @@ namespace Tools.ExcelResolver.Editor } else { - ScriptableObject instance = ScriptableObject.CreateInstance(dataSOType); - set(instance, dataSOType, worksheet, row, classCodeData); + ScriptableObject instance = ScriptableObject.CreateInstance(dataName); + set(instance, worksheet, row, classCodeData); AssetDatabase.CreateAsset(instance, fullPath); Debug.Log($"创建:{assetName}", instance); result.Add(instance); @@ -72,13 +66,14 @@ namespace Tools.ExcelResolver.Editor AssetDatabase.DeleteAsset(AssetDatabase.GetAssetPath(value)); } - WriteUtilSO(path, dataSOType, result, classCodeData); + WriteUtilSO(path, result, classCodeData); } + AssetDatabase.SaveAssets(); GC.Collect(); GC.WaitForPendingFinalizers(); - void set(ScriptableObject instance, Type dataSOType, ExcelWorksheet worksheet, int row, ClassCodeData classCodeData) + void set(ScriptableObject instance, ExcelWorksheet worksheet, int row, ClassCodeData classCodeData) { foreach (var pair in classCodeData.fields) { @@ -87,7 +82,7 @@ namespace Tools.ExcelResolver.Editor var cell = worksheet.Cells[row, col]; object convertedValue = ExcelResolverUtil.ConvertCellValue(cell, fieldData.type, classCodeData.className); - FieldInfo fieldInfo = dataSOType.GetField(fieldData.varName); + FieldInfo fieldInfo = instance.GetType().GetField(fieldData.varName); if (fieldInfo == null) throw new Exception($"{classCodeData.className}中不存在字段:{fieldData.varName}"); fieldInfo.SetValue(instance, convertedValue); } diff --git a/Assets/Unity-Tools/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteUtilSO.cs b/Assets/Unity-Tools/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteUtilSO.cs index 6a8ea69..8340afd 100644 --- a/Assets/Unity-Tools/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteUtilSO.cs +++ b/Assets/Unity-Tools/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteUtilSO.cs @@ -8,13 +8,11 @@ namespace Tools.ExcelResolver.Editor { public sealed partial class ExcelResolverEditorWindow { - private void WriteUtilSO(string path, Type dataSOType, List assets, ClassCodeData classCodeData) + private void WriteUtilSO(string path, List assets, ClassCodeData classCodeData) { var utilName = $"{classCodeData.className}Util"; var utilPath = $"{path}/_{utilName}.asset"; - Type utilType = ExcelResolverUtil.GetOrCacheTypeByName(utilName); - var instance = AssetDatabase.LoadAssetAtPath(utilPath); if (instance == null) { @@ -26,12 +24,11 @@ namespace Tools.ExcelResolver.Editor { case TableType.SingleKeyTable: var keyField = classCodeData.keyField[0]; - var dict = (IDictionary)Activator.CreateInstance(typeof(Dictionary<,>).MakeGenericType(keyField.type.RealType, dataSOType)); + var dict = (IDictionary)Activator.CreateInstance(typeof(Dictionary<,>).MakeGenericType(keyField.type.RealType, assets[0].GetType())); - var keyFieldInfo = dataSOType.GetField(keyField.varName); foreach (var asset in assets) { - var key = keyFieldInfo.GetValue(asset); + var key = asset.GetType().GetField(keyField.varName).GetValue(asset); dict[key] = asset; } instance.GetType().GetField("Data").SetValue(instance, dict); diff --git a/Assets/_Project/ExcelResolver/Excel/hero.xlsx b/Assets/_Project/ExcelResolver/Excel/hero.xlsx index b3cf3bf..475ac0e 100644 Binary files a/Assets/_Project/ExcelResolver/Excel/hero.xlsx and b/Assets/_Project/ExcelResolver/Excel/hero.xlsx differ diff --git a/Assets/_Project/ScriptableObject/Excel/Hero/Hero_6.asset b/Assets/_Project/ScriptableObject/Excel/Hero/Hero_4.asset similarity index 64% rename from Assets/_Project/ScriptableObject/Excel/Hero/Hero_6.asset rename to Assets/_Project/ScriptableObject/Excel/Hero/Hero_4.asset index 5b99bd0..65e2853 100644 --- a/Assets/_Project/ScriptableObject/Excel/Hero/Hero_6.asset +++ b/Assets/_Project/ScriptableObject/Excel/Hero/Hero_4.asset @@ -10,7 +10,7 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: e8aa3c1560079b84cafbabe4bc0d2c8d, type: 3} - m_Name: Hero_6 + m_Name: Hero_4 m_EditorClassIdentifier: serializationData: SerializedFormat: 2 @@ -34,7 +34,31 @@ MonoBehaviour: Data: - Name: Entry: 12 - Data: 0 + Data: 2 + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 3 + Data: 2 + - Name: $v + Entry: 4 + Data: 2.3 + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 3 + Data: 5 + - Name: $v + Entry: 4 + Data: 4.6 + - Name: + Entry: 8 + Data: - Name: Entry: 13 Data: @@ -60,21 +84,49 @@ MonoBehaviour: Data: - Name: Entry: 12 + Data: 2 + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 3 Data: 0 + - Name: $v + Entry: 3 + Data: 500 + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 3 + Data: 1 + - Name: $v + Entry: 3 + Data: 300 + - Name: + Entry: 8 + Data: - Name: Entry: 13 Data: - Name: Entry: 8 Data: - id: 6 - name: - icon: hero_6 - has: 0 - hp: 0 - atk: 0 - speed: 0 - pos: {x: 0, y: 0, z: 0} - ches: {x: 0, y: 0} - attack_target: [] - color: 0 + id: 4 + name: "\u9053\u58EB" + icon: hero_1 + has: 1 + hp: 100 + atk: 20 + speed: 1.2 + pos: {x: 0, y: 1, z: 9} + ches: {x: 0, y: 1} + attack_target: + - {x: 1, y: 2} + - {x: 1, y: 2} + - {x: 1, y: 2} + - {x: 1, y: 2} + color: 1 diff --git a/Assets/_Project/ScriptableObject/Excel/Hero/Hero_6.asset.meta b/Assets/_Project/ScriptableObject/Excel/Hero/Hero_4.asset.meta similarity index 79% rename from Assets/_Project/ScriptableObject/Excel/Hero/Hero_6.asset.meta rename to Assets/_Project/ScriptableObject/Excel/Hero/Hero_4.asset.meta index ff9650f..767008d 100644 --- a/Assets/_Project/ScriptableObject/Excel/Hero/Hero_6.asset.meta +++ b/Assets/_Project/ScriptableObject/Excel/Hero/Hero_4.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: fd4758da888e8054b897780d3fa8f13a +guid: 4f9da86093404c6449ad6f21e1207cb0 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/Assets/_Project/ScriptableObject/Excel/Hero/_HeroUtil.asset b/Assets/_Project/ScriptableObject/Excel/Hero/_HeroUtil.asset index bf8a38d..9b22469 100644 --- a/Assets/_Project/ScriptableObject/Excel/Hero/_HeroUtil.asset +++ b/Assets/_Project/ScriptableObject/Excel/Hero/_HeroUtil.asset @@ -19,7 +19,7 @@ MonoBehaviour: - {fileID: 11400000, guid: 3b98756cd197195498b14b5e67935cbe, type: 2} - {fileID: 11400000, guid: cdde19489f16dce429041c1d6e207864, type: 2} - {fileID: 11400000, guid: 934bc10c06f0592419baf474987cc0a7, type: 2} - - {fileID: 11400000, guid: fd4758da888e8054b897780d3fa8f13a, type: 2} + - {fileID: 11400000, guid: 4f9da86093404c6449ad6f21e1207cb0, type: 2} SerializedBytesString: Prefab: {fileID: 0} PrefabModificationsReferencedUnityObjects: [] @@ -80,7 +80,7 @@ MonoBehaviour: Data: - Name: $k Entry: 3 - Data: 6 + Data: 4 - Name: $v Entry: 10 Data: 3