Browse Source

成功创建SO并赋值

master
coffee 6 months ago
parent
commit
89b1b7ef3b
  1. BIN
      Assets/ExcelResolver/Excel/hero.xlsx
  2. 8
      Assets/ScriptableObject.meta
  3. 8
      Assets/ScriptableObject/Generator.meta
  4. 8
      Assets/ScriptableObject/Generator/Excel.meta
  5. 20
      Assets/ScriptableObject/Generator/Excel/Hero_1.asset
  6. 8
      Assets/ScriptableObject/Generator/Excel/Hero_1.asset.meta
  7. 20
      Assets/ScriptableObject/Generator/Excel/Hero_2.asset
  8. 8
      Assets/ScriptableObject/Generator/Excel/Hero_2.asset.meta
  9. 52
      Assets/Scripts/Generator/Excel/Hero.cs
  10. 2
      Assets/Scripts/Generator/Excel/Hero.cs.meta
  11. 25
      Assets/Scripts/Generator/Excel/HeroUtil.cs
  12. 2
      Assets/Scripts/Generator/Excel/HeroUtil.cs.meta
  13. 14
      Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs

BIN
Assets/ExcelResolver/Excel/hero.xlsx

Binary file not shown.

8
Assets/ScriptableObject.meta

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8c2556b969d8e2e4881be5e4e996dfcc
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
Assets/ScriptableObject/Generator.meta

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0640585ce4cc1ab43ad546d3258130dc
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
Assets/ScriptableObject/Generator/Excel.meta

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e67c6d5e54b9de94ab4e5d1865feb935
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

20
Assets/ScriptableObject/Generator/Excel/Hero_1.asset

@ -0,0 +1,20 @@
%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: 31296c0321326704c8614b265011bd90, type: 3}
m_Name: Hero_1
m_EditorClassIdentifier:
id: 1
name: "\u9053\u58EB"
icon: hero_1
hp: 100
atk: 20
speed: 1.2

8
Assets/ScriptableObject/Generator/Excel/Hero_1.asset.meta

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5d9d9d9b6a4a85b468a248932c5ffc68
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

20
Assets/ScriptableObject/Generator/Excel/Hero_2.asset

@ -0,0 +1,20 @@
%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: 31296c0321326704c8614b265011bd90, type: 3}
m_Name: Hero_2
m_EditorClassIdentifier:
id: 2
name: "\u6218\u58EB"
icon: hero_2
hp: 150
atk: 15
speed: 1

8
Assets/ScriptableObject/Generator/Excel/Hero_2.asset.meta

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 20719aba661cd244f9d4e3b1f45a3e14
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

52
Assets/Scripts/Generator/Excel/Hero.cs

@ -0,0 +1,52 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Tools.ExcelResolver
{
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Hero : ScriptableObject, IExcelData
{
/// <summary>
/// 英雄
/// </summary>
public int id;
/// <summary>
/// 名称
/// </summary>
public string name;
/// <summary>
/// icon
/// </summary>
public string icon;
/// <summary>
/// 血量
/// </summary>
public int hp;
/// <summary>
/// 攻击力
/// </summary>
public int atk;
/// <summary>
/// 移速
/// </summary>
public float speed;
}
}

2
Assets/Scripts/Generator/Excel/Hero.cs.meta

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 31296c0321326704c8614b265011bd90

25
Assets/Scripts/Generator/Excel/HeroUtil.cs

@ -0,0 +1,25 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Tools.ExcelResolver
{
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Sirenix.OdinInspector;
public class HeroUtil : SerializedScriptableObject, IExcelSO
{
public Dictionary<int, Hero> Data;
}
}

2
Assets/Scripts/Generator/Excel/HeroUtil.cs.meta

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: f75077205d2ee5349b19af6333dc2e66

14
Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOData.cs

@ -1,7 +1,9 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using OfficeOpenXml;
using UnityEditor;
using UnityEngine;
namespace Tools.ExcelResolver.Editor
@ -12,6 +14,11 @@ namespace Tools.ExcelResolver.Editor
private void WriteSOData()
{
if (classCodeDataDict == null)
{
ReadExcel();
}
foreach (var data in classCodeDataDict)
{
var worksheet = data.Key;
@ -46,14 +53,19 @@ namespace Tools.ExcelResolver.Editor
ScriptableObject instance = ScriptableObject.CreateInstance(soType);
for (int col = 2; col < classCodeData.fields.Keys.Max(); col++)
for (int col = 2; col <= classCodeData.fields.Keys.Max(); col++)
{
var cell = worksheet.Cells[row, col];
if (string.IsNullOrEmpty(cell.Text)) continue;
object convertedValue = ExcelResolverUtil.ConvertCellValue(cell, classCodeData.fields[col].type, classCodeData.className);
FieldInfo fieldInfo = soType.GetField(classCodeData.fields[col].varName);
if (fieldInfo == null) throw new Exception($"目标类中不存在字段:{classCodeData.fields[col].varName}");
fieldInfo.SetValue(instance, convertedValue);
}
AssetDatabase.CreateAsset(instance, $"{excelResolverConfig.SOPathRoot}/{classCodeData.className}_{row - 6}.asset");
}
AssetDatabase.SaveAssets();
}
}
}

Loading…
Cancel
Save