10 changed files with 185 additions and 23 deletions
@ -0,0 +1,51 @@ |
|||||||
|
using System; |
||||||
|
using System.Collections; |
||||||
|
using System.Collections.Generic; |
||||||
|
using UnityEditor; |
||||||
|
using UnityEngine; |
||||||
|
|
||||||
|
namespace Tools.ExcelResolver.Editor |
||||||
|
{ |
||||||
|
public sealed partial class ExcelResolverEditorWindow |
||||||
|
{ |
||||||
|
private void WriteUtilSO(string path, Type dataSOType, List<ScriptableObject> assets, ClassCodeData classCodeData) |
||||||
|
{ |
||||||
|
var utilName = $"{classCodeData.className}Util"; |
||||||
|
var utilPath = $"{path}/_{utilName}.asset"; |
||||||
|
|
||||||
|
Type utilType = ExcelResolverUtil.GetOrCacheTypeByName(utilName); |
||||||
|
|
||||||
|
var instance = AssetDatabase.LoadAssetAtPath<ScriptableObject>(utilPath); |
||||||
|
if (instance == null) |
||||||
|
{ |
||||||
|
instance = ScriptableObject.CreateInstance(utilName); |
||||||
|
AssetDatabase.CreateAsset(instance, utilPath); |
||||||
|
} |
||||||
|
|
||||||
|
switch (classCodeData.tableType) |
||||||
|
{ |
||||||
|
case TableType.SingleKeyTable: |
||||||
|
var keyField = classCodeData.keyField[0]; |
||||||
|
var dict = (IDictionary)Activator.CreateInstance(typeof(Dictionary<,>).MakeGenericType(keyField.type.RealType, dataSOType)); |
||||||
|
|
||||||
|
var keyFieldInfo = dataSOType.GetField(keyField.varName); |
||||||
|
foreach (var asset in assets) |
||||||
|
{ |
||||||
|
var key = keyFieldInfo.GetValue(asset); |
||||||
|
dict[key] = asset; |
||||||
|
} |
||||||
|
instance.GetType().GetField("Data").SetValue(instance, dict); |
||||||
|
break; |
||||||
|
case TableType.UnionMultiKeyTable: |
||||||
|
break; |
||||||
|
case TableType.MultiKeyTable: |
||||||
|
break; |
||||||
|
case TableType.NotKetTable: |
||||||
|
break; |
||||||
|
case TableType.ColumnTable: |
||||||
|
break; |
||||||
|
} |
||||||
|
EditorUtility.SetDirty(instance); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,3 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 3b78262c18a44a04af02c750d7628d02 |
||||||
|
timeCreated: 1737914896 |
Binary file not shown.
@ -1,5 +1,5 @@ |
|||||||
fileFormatVersion: 2 |
fileFormatVersion: 2 |
||||||
guid: c7b7eb46a7ca8244890947b043ee79ab |
guid: fd4758da888e8054b897780d3fa8f13a |
||||||
NativeFormatImporter: |
NativeFormatImporter: |
||||||
externalObjects: {} |
externalObjects: {} |
||||||
mainObjectFileID: 11400000 |
mainObjectFileID: 11400000 |
@ -0,0 +1,95 @@ |
|||||||
|
%YAML 1.1 |
||||||
|
%TAG !u! tag:unity3d.com,2011: |
||||||
|
--- !u!114 &11400000 |
||||||
|
MonoBehaviour: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 0} |
||||||
|
m_Enabled: 1 |
||||||
|
m_EditorHideFlags: 0 |
||||||
|
m_Script: {fileID: 11500000, guid: 0b8ec7437f31db141b138472f0c2a3aa, type: 3} |
||||||
|
m_Name: _HeroUtil |
||||||
|
m_EditorClassIdentifier: |
||||||
|
serializationData: |
||||||
|
SerializedFormat: 2 |
||||||
|
SerializedBytes: |
||||||
|
ReferencedUnityObjects: |
||||||
|
- {fileID: 11400000, guid: 3b98756cd197195498b14b5e67935cbe, type: 2} |
||||||
|
- {fileID: 11400000, guid: cdde19489f16dce429041c1d6e207864, type: 2} |
||||||
|
- {fileID: 11400000, guid: 934bc10c06f0592419baf474987cc0a7, type: 2} |
||||||
|
- {fileID: 11400000, guid: fd4758da888e8054b897780d3fa8f13a, type: 2} |
||||||
|
SerializedBytesString: |
||||||
|
Prefab: {fileID: 0} |
||||||
|
PrefabModificationsReferencedUnityObjects: [] |
||||||
|
PrefabModifications: [] |
||||||
|
SerializationNodes: |
||||||
|
- Name: Data |
||||||
|
Entry: 7 |
||||||
|
Data: 0|System.Collections.Generic.Dictionary`2[[System.Int32, mscorlib],[Tools.ExcelResolver.Hero, |
||||||
|
Assembly-CSharp]], mscorlib |
||||||
|
- Name: comparer |
||||||
|
Entry: 7 |
||||||
|
Data: 1|System.Collections.Generic.GenericEqualityComparer`1[[System.Int32, |
||||||
|
mscorlib]], mscorlib |
||||||
|
- Name: |
||||||
|
Entry: 8 |
||||||
|
Data: |
||||||
|
- Name: |
||||||
|
Entry: 12 |
||||||
|
Data: 4 |
||||||
|
- Name: |
||||||
|
Entry: 7 |
||||||
|
Data: |
||||||
|
- Name: $k |
||||||
|
Entry: 3 |
||||||
|
Data: 1 |
||||||
|
- Name: $v |
||||||
|
Entry: 10 |
||||||
|
Data: 0 |
||||||
|
- Name: |
||||||
|
Entry: 8 |
||||||
|
Data: |
||||||
|
- Name: |
||||||
|
Entry: 7 |
||||||
|
Data: |
||||||
|
- Name: $k |
||||||
|
Entry: 3 |
||||||
|
Data: 2 |
||||||
|
- Name: $v |
||||||
|
Entry: 10 |
||||||
|
Data: 1 |
||||||
|
- Name: |
||||||
|
Entry: 8 |
||||||
|
Data: |
||||||
|
- Name: |
||||||
|
Entry: 7 |
||||||
|
Data: |
||||||
|
- Name: $k |
||||||
|
Entry: 3 |
||||||
|
Data: 3 |
||||||
|
- Name: $v |
||||||
|
Entry: 10 |
||||||
|
Data: 2 |
||||||
|
- Name: |
||||||
|
Entry: 8 |
||||||
|
Data: |
||||||
|
- Name: |
||||||
|
Entry: 7 |
||||||
|
Data: |
||||||
|
- Name: $k |
||||||
|
Entry: 3 |
||||||
|
Data: 6 |
||||||
|
- Name: $v |
||||||
|
Entry: 10 |
||||||
|
Data: 3 |
||||||
|
- Name: |
||||||
|
Entry: 8 |
||||||
|
Data: |
||||||
|
- Name: |
||||||
|
Entry: 13 |
||||||
|
Data: |
||||||
|
- Name: |
||||||
|
Entry: 8 |
||||||
|
Data: |
Loading…
Reference in new issue