1.在unity中右键csv文件 生成这张表的Csharp类
2.表的第一行第一个格子 C#类的全类名 必须带命名空间 第二个格子是类型(class/enum) 第三个格子是注释(小于三列的时候就别加了)
3.class_表的第二行 字段名 一个格子一个字段
4.class_表的第三行 字段类型 一个格子一个类型 支持少数类型(string,int,float,Array,Vector2,Vector3,Enum(枚举填写整数))
5.class_表的第二行 字段注释 一个格子一个字段 给策划看的
6.class_表关于转字典的函数 字典的Key是第一个字段的类型
7.enum_表第二行始终是[枚举名,枚举值,概要] 从第三行开始例[Move,1,移动]
using System;
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace FGUFW.Core
{
static public class Csv2Csharp
{
const string Extension = ".csv";
[MenuItem("Assets/PrintAssetPath")]
static private void printAssetPath()
{
Debug.Log(AssetDatabase.GetAssetPath(Selection.activeObject));
}
[MenuItem("Assets/Csv2Csharp")]
private static void Build()
{
var selects = Selection.objects;
if(selects==null)
{
return;
}
//筛选csv文件
List<string> paths = new List<string>();
foreach (var obj in selects)
{
string path = AssetDatabase.GetAssetPath(obj).Substring(6);
if(Path.GetExtension(path)==Extension)
{
paths.Add(path);
}
}
if(paths.Count==0)return;
foreach (var path in paths)
{
var line = File.ReadAllLines(Application.dataPath+path)[0];
var fullclassname = line.Split(',')[0].Split('.');
var csharptype = line.Split(',')[1];
switch (csharptype)
{
case "class":
createClassScript(path);
break;
case "enum":
createEnumScript(path);
break;
default:
Debug.LogError($"未标注类型 {csharptype}");
break;
}
}
AssetDatabase.Refresh();
}
private static void createClassScript(string path)
{
var lines = File.ReadAllLines(Application.dataPath+path);
var fullclassname = lines[0].Split(',')[0].Split('.');
var classSu