LinkXmlGen.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. using UnityEngine;
  2. using System.Collections.Generic;
  3. using XLua;
  4. using System.IO;
  5. using System.Text;
  6. using System.Linq;
  7. using CSObjectWrapEditor;
  8. public class LinkXmlGen : ScriptableObject
  9. {
  10. public TextAsset Template;
  11. public static IEnumerable<CustomGenTask> GetTasks(LuaEnv lua_env, UserConfig user_cfg)
  12. {
  13. LuaTable data = lua_env.NewTable();
  14. var assembly_infos = (from type in (user_cfg.ReflectionUse.Concat(user_cfg.LuaCallCSharp))
  15. group type by type.Assembly.GetName().Name into assembly_info
  16. select new { FullName = assembly_info.Key, Types = assembly_info.ToList()}).ToList();
  17. data.Set("assembly_infos", assembly_infos);
  18. yield return new CustomGenTask
  19. {
  20. Data = data,
  21. Output = new StreamWriter(GeneratorConfig.common_path + "/link.xml",
  22. false, Encoding.UTF8)
  23. };
  24. }
  25. [GenCodeMenu]//加到Generate Code菜单里头
  26. public static void GenLinkXml()
  27. {
  28. Generator.CustomGen(ScriptableObject.CreateInstance<LinkXmlGen>().Template.text, GetTasks);
  29. }
  30. }