赞
踩
private static string GenerateCode(string fileName) { StringBuilder code = new StringBuilder(); code.Append("using System;\nusing UnityEngine;\nusing System.Collections.Generic;\nusing ResourceSystem;\n\n"); code.Append("public class "); code.Append(fileName); code.Append("Info:ScriptableObject,IDataCollectionTemplete\n{"); code.Append("\n public List<"); code.Append(fileName); code.Append("Data> Data = new List<"); code.Append(fileName); code.Append("Data>();"); code.Append("\n /// <summary>\n "); code.Append(" /// 获得内容Type"); code.Append("\n /// </summary>\n public Type GetContenType()\n {"); code.Append("\n return typeof("); code.Append(fileName); code.Append("Data);"); code.Append("\n }"); code.Append("\n /// <summary>\n "); code.Append(" /// 转换成当前内容类型的列表"); code.Append("\n /// </summary>\n public void ConvertToContentList(List<IDataTemplete> contents)\n {"); code.Append("\n for(int i = 0; i < contents.Count; i++)\n {"); code.Append("\n Data.Add(("); code.Append(fileName); code.Append("Data)contents[i]);"); code.Append("\n }"); code.Append("\n }"); code.Append("\n}\n\n"); code.Append("\n[Serializable]\n"); code.Append("public class "); code.Append(fileName); code.Append("Data:IDataTemplete\n{"); for(int i = 0; i < argsNames.Count; i++) { code.Append("\n /// <summary>\n "); code.Append(" /// "); code.Append(argsChineseName[i]); code.Append("\n /// </summary>"); code.Append("\n public "); code.Append(argsType[i]); code.Append(" "); code.Append(argsNames[i]); code.Append("= default("); code.Append(argsType[i]); code.Append(");"); } code.Append("\n /// <summary>\n "); code.Append(" /// 反序列化"); code.Append("\n /// </summary>\n public void DeSerialize(object[] content)\n {"); for (int i = 0; i < argsNames.Count; i++) { code.Append("\n "); code.Append(argsNames[i]); if (argsType[i] == "int") { code.Append(" = Int32.Parse(content["); code.Append(i); code.Append("].ToString());"); } else { code.Append(" = content["); code.Append(i); code.Append("].ToString();"); } } code.Append("\n }"); code.Append("\n}"); return code.ToString(); }
提供代码模板,后面替换预先准备好的关键字即可:
using System; using UnityEngine; using System.Collections.Generic; using CommonFactory; public class $FileName$Info : ScriptableObject, IDataCollectionTemplete { public List<$FileName$Data> Data = new List<$FileName$Data>(); public $FileName$Data GetDataByID(int id) { for (int i = 0; i < Data.Count; i++) { if (Data[i].ID==id) { return Data[i]; } } return null; } public void ConvertToContentList(List<IDataTemplete> contents) { $ConvertToContentList$ } /// <summary> /// 获得内容Type /// </summary> /// <returns></returns> public Type GetContenType() { return typeof($FileName$Data); } } public class $FileName$Data:IDataTemplete { /// <summary>ID</summary> public int ID { get; set; } /// <summary>是否为空</summary> public bool IsEmpty { get; set; } public $FileName$Data() { } public void DeSerialize(object[] content) { } }
核心代码:
StringBuilder code = new StringBuilder();
code .Append( File.ReadAllText(Application.dataPath+"/Resources/Editor/CodeTemplete/DataTemplete.txt"));
code.Replace("$FileName$", fileName);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。