EmmyLua 配置教程参考博文:https://blog.csdn.net/sinat_24229853/article/details/79226608

博文中代码部分修改如下:
1.在包含Tolua的项目中,在ToluaMenu.cs 中添加下列代码

[MenuItem("Lua/Gen EmmyLuaApi", false, 103)]static void GenEmmyLuaApi(){string path = "./EmmyLuaApi/";if (Directory.Exists(path)){Directory.Delete(path, true);}Directory.CreateDirectory(path);GenCustom(path);}static void GenCustom(string path){BindType[] typeList = CustomSettings.customTypeList;BindType[] list = GenBindTypes(typeList);List<Type> tlist = new List<Type>(baseType);foreach (var item in list){GenType(item.type, true, path, item);}foreach (var item in tlist){GenType(item, true, path);}}static void GenType(Type t, bool custom, string path, ToLuaMenu.BindType bindType = null){if (!CheckType(t, custom))return;//TODO System.MulticastDelegatevar sb = new StringBuilder();string className = bindType != null ? bindType.libName : t.Name;if (!CheckType(t.BaseType, custom))sb.AppendFormat("---@class {0}\n", t.Name);elsesb.AppendFormat("---@class {0} : {1}\n", t.Name, t.BaseType.Name);GenTypeField(t, sb);sb.AppendFormat("local {0}={{ }}\n", t.Name);GenTypeMehod(t, sb);sb.AppendFormat("{0}.{1} = {2}", t.Namespace, t.Name, t.Name);if (className != t.Name){sb.AppendFormat("\n{0} = {1}", className, t.Name);}File.WriteAllText(path + t.Name + ".lua", sb.ToString(), Encoding.UTF8);}static bool CheckType(Type t, bool custom){if (t == null){return false;}return !BindType.IsObsolete(t);}static void GenTypeField(Type t, StringBuilder sb){FieldInfo[] fields = t.GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly);foreach (var field in fields){if (field.IsDefined(typeof(NoToLuaAttribute), false))continue;sb.AppendFormat("---@field public {0} {1}\n", field.Name, GetLuaType(field.FieldType));}PropertyInfo[] properties = t.GetProperties(BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly);foreach (var pro in properties){if (pro.IsDefined(typeof(NoToLuaAttribute), false))continue;sb.AppendFormat("---@field public {0} {1}\n", pro.Name, GetLuaType(pro.PropertyType));}}static void GenTypeMehod(Type t, StringBuilder sb){MethodInfo[] methods = t.GetMethods(BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly);foreach (var method in methods){if (method.IsGenericMethod)continue;if (method.IsDefined(typeof(NoToLuaAttribute), false))continue;if (method.Name.StartsWith("get_") || method.Name.StartsWith("set_"))continue;sb.AppendLine("---@public");var paramstr = new StringBuilder();foreach (var param in method.GetParameters()){sb.AppendFormat("---@param {0} {1}\n", param.Name, GetLuaType(param.ParameterType));if (paramstr.Length != 0){paramstr.Append(", ");}paramstr.Append(param.Name);}sb.AppendFormat("---@return {0}\n", method.ReturnType == null ? "void" : GetLuaType(method.ReturnType));if (method.IsStatic){sb.AppendFormat("function {0}.{1}({2}) end\n", t.Name, method.Name, paramstr);}else{sb.AppendFormat("function {0}:{1}({2}) end\n", t.Name, method.Name, paramstr);}}}static string GetLuaType(Type t){if (t.IsEnum//|| t == typeof(ulong)//|| t == typeof(long)//|| t == typeof(int)//|| t == typeof(uint)//|| t == typeof(float)|| t == typeof(double)//|| t == typeof(byte)//|| t == typeof(ushort)//|| t == typeof(short))return "number";if (t == typeof(bool))return "bool";if (t == typeof(string))return "string";if (t == typeof(void))return "void";return t.Name;}

2.点击Unity菜单栏中Lua/Gen EmmyLuaApi
3.即可生成EmmyLuaApi文件夹

EmmyLua Tolua代码提示相关推荐

  1. 给XLua生成Unity Api的EmmyLua代码提示

    问题背景 编写Lua代码时使用Unity的Api没有代码提示影响效率,需要一个类型系统和代码提示,下面来解决这个问题 支持类型系统 Lua是动态语言,不支持声明变量类型,需要从语言外入手.有个插件叫E ...

  2. unity, monoDevelop ide 代码提示不起作用的解决方法

    monoDevelop ide 代码提示不起作用,可能是因为ide里索引了一些不存在的文件,检查一下solution窗口里是否有文件变红,如下图中springControlEx.cs.将变红的文件re ...

  3. 百度搜索_如何打开Intellij IDEA的代码提示功能?

    Intellij IDEA是一款优秀的编程软件,相比较Eclipse之下它的用户群较小,但并不代表它的功能就比Eclipse差,如果用顺手了还是特别好用的.代码提示功能对于程序员来说非常重要,那么我们 ...

  4. MyEclipse扩展功能设置(Eclipse代码提示功能)

    如果是eclipse的 .提示功能没有了,照下边这样设置 window->Preferences->Java->Editor->ContentAssist->Advanc ...

  5. ECLIPSE远程调试出现如下问题 ECLIPSE中调试代码提示找不到源

    ECLIPSE远程调试出现如下问题  ECLIPSE中调试代码提示找不到源 如此提示是由于没有JAR包中找不到MAIN,可以手动添加或自己修改 利用ECLIPSE填写JAR中的MAIN方法后,就可以调 ...

  6. IDEA只修改代码提示为不区分大小写

    为了提高开发效率,在首字母及所有字母提示的基础上,进一步优化,IDEA支持不区分大小写的代码提示! 修改步骤如下:

  7. (003) java后台开发之设置Eclipse代码提示和快捷键

    模块一:增强Eclipse 的代码提示功能 具体怎么样来配置?下面开始说步骤: 1. 打开Eclipse,然后"window"→"Preferences" 2. ...

  8. idea中properties配置文件没有代码提示及代码高亮问题解决方案

    idea中properties配置文件没有代码提示及代码高亮问题解决方案 参考文章: (1)idea中properties配置文件没有代码提示及代码高亮问题解决方案 (2)https://www.cn ...

  9. 在PHPStorm中支持ThinkPHP代码提示

    在phpstorm中开发ThinkPHP应用程序时,没有代码提示,困扰了很长时间,后来参考网上一些关于在phpstorm中支持YII框架代码提示的相关帖子,尝试在ThinkPHP中进行测试,目前测试成 ...

最新文章

  1. LabVIEW 三维机器人展示
  2. 已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。...
  3. 电子商务思维导图精品荟萃:电子商务思维导图大全[多图精品收藏]
  4. Android 开发之多线程处理、Handler 详解
  5. 关于ibatis.net 和 Nhibernate的选择
  6. springboot动态数据源切换(多数据源配置)
  7. python作用域的顺序_“Python”函数的参数和范围,及其,作用域
  8. 我们无法更新系统保留的分区_系统更新是我们手机的基本功能之一 安卓智能更新有哪些用途...
  9. FD.io VPP 20.09版本正式发布:往期VPP文章回顾+下载地址+相关链接
  10. linux下抓包工具 wireshark,网络抓包工具Wireshark的简单使用
  11. YAF 关闭错误异常使用trigger_error来处理
  12. 金蝶KIS/K3各版本下载地址
  13. 电脑连接Wifi,只能上QQ不能上网。关键字:无Internet访问权限。
  14. python调用nmap扫描全端口_python nmap 扫描服务器端口
  15. python大漠库_python类似大漠插件的库
  16. (转)开源GIS总结(一)——总结
  17. vue怎么改logo_vue项目添加网页logo
  18. 【项目管理/PMP/PMBOK第六版/新考纲】纯干货!项目经理/角色/项目经理的能力/项目经理的领导力/领导和管理/职位权力/个人权力/领导生命周期理论/仆人式领导
  19. 国内研发!适用于安卓应用程序的 Word文档功能开发组件来啦!
  20. 数据推荐 | 自然对话语音数据集

热门文章

  1. 解决各大浏览器下载文件,文件名乱码的问题
  2. Qt COM组件导出源文件
  3. java公告栏js资源_javascript制作滚动公告栏
  4. 使用最新的python代码发送nbns协议包,获取同一局域网下其它电脑的名称
  5. uboot 设置环境变量
  6. 如何修改maven本地仓库地址
  7. Visio自定义背景网格颜色
  8. 利用顶点位移进行VR畸变校正
  9. Python-菜鸟练习100题
  10. IDEA 插件开发 一个表单提交的弹出框