http://blog.csdn.net/u010019717/article/details/77510066?ref=myread

http://blog.csdn.NET/u010019717

推荐一下这个国人弄的基于IntelliJ IDE 弄得插件 EmmyLua 。  他的QQ群: 29850775

github: https://github.com/tangzx/IntelliJ-EmmyLua

oschina: http://git.oschina.net/tangzx/IntelliJ-Lua

IDEA Plugins :   https://plugins.jetbrains.com/plugin/9768-emmylua

文档:     https://tangzx.github.io/emmydoc/

运行的时候可能会报错:   Program [lua.exe] not found.  怎么办?  插件的不足之处没有内置lua环境,需要自己安装比如  “Lua for window ”。  希望插件以后能内置环境。  按照作者的回复考虑体积搞大“至少两个平台 32 64,再加上luasocket模块, 还要考虑平台和版本问题 ”内置是不可能了。   传送门:

方式一、 Lua for Windows  的下载(跟源代码相比会版本落后一些)

https://github.com/rjpcomputing/luaforwindows/releases

而且自带了 编辑器 SciTE,

同时  工具帮我们配置了环境变量(插件就是通过这个环境变量找到的lua.exe)

方式二、下载 bin  文件 http://luabinaries.sourceforge.net/download.html ,

解压到安装软件的地方,  然后配置环境变量就行!(注意 lua.exe 是我拷贝的 lua53.exe 然后重命名的)

首先,安装插件。  注意对IDEA 的版本有一个要求不能低于 2017.1

理论上如果你安装过一下任意一个产品, 只要版本够高, 都可以安装这个插件

“IntelliJ IDEA,  PhpStorm, WebStorm , PyCharm, RubyMine,  AppCode,  CLion ,Gogland  ,DataGrip  ,Rider , Android Studio”

以 Rider 2017.1.1 为例(但还是推荐使用IDEA , 否则可能没办法创建Lua项目)

File -> Settings  然后

你可以把插件下载到本地, 然后选择从磁盘安装,   也可以在IDEA工具内搜索安装(我是这种)。

然后在右侧  点击  Install  安装, 重启就行了。

注: 可能会出现下载不了的问题, 这个跟使用的网络运营商有关。  只能使用另外一种方式安装了!!!

重启后, 新建项目  (或者  打开项目选择Lua文件  所在的文件夹就行!)

在 src 目录下, 新建一个 main.lua 文件,  输入

print("Test main")

运行, 正常输出, 不报错就 OK !

试试Debug 模式运行, 设置断点 都是正常的!!

要把Unity项目导入才行:

IDEA中  File -> New -> Module from Existing Sources  选择Unity 项目的 Assets就行。

怎么调试项目中lua代码呢

File -> Project Structure 中  (这个源本身是可以添加多个的!)

我遇到的问题是设置  Sources Root 的过程,  比如说我就要调试  xlua 项目的 LuaTestScript.lua.txt 脚本 。

群中管理员的解答: “root 是你代码里面 访问lua文件的根目录”,

比如 你的代码在 src/lua/test/1.lua  里面  你代码里面用的时候是  'test/1.lua' 那你的 lua目录就是root 。  xlua中这种访问是指什么呢?

比如下面的LuaBehaviour.cs 中   luaEnv.DoString的第二个参数 !

Try attachto pid:39556 with x64 debugger.

Found allnecessary Lua functions [M:xlua.dll, V:530]

Debuggerattached to process.

Attachfinish.

[✘]File not found : Init

[✘]File not found : LuaBehaviour

提示有这两个东西没找到!

实例代码中是有错误的, LuaBehaviour.cs 中将    luaEnv.DoString的第二个参数 改成LuaTestScript.lua.txt可以找到。 还差那个 Init 不知道是啥。

Try attach to pid:39556 with x64 debugger.

Found all necessary Lua functions [M:xlua.dll, V:530]

Debugger attached to process.

Attach finish.

[✘] File not found : Init

[√] File was loaded : LuaTestScript.lua.txt

VS 内 全局搜索"Init"   ,lua是作为cs中的字符串 , 就是 LuaEnv.cs  文件中!  把参数改为“LuaEnv.cs ”   他所在Xlua\Src 文件夹下, 要添加这个源。   结果是不行的

“如果lua代码不是单独的文件, 而是在cs 中的字符串 可以断点调试么? ”  答案是后续可能会支持, 现在是不可以地。    不过不影响正常调试,想要调试的lua脚本被正常加载就行了。  不管了!

xlua 默认的lua文件名字是 .lua.txt 实际上就是.txt 怎么能让这个IDEA关联.txt 到EmmyLua 件上?

代码提示忽略大小写:

他的代码提示是怎么做到的

所谓的注解! EmmyLua注解功能只是单纯的辅助编辑器代码提示以及其它功能,和Lua代码的实际运行逻辑没有任何关系,因为它们就是普通的Lua注释。

https://tangzx.github.io/emmydoc/  文档中提到 , 具体内容看文档!

@class类声明注解

完整格式:---@class {my_type}[ : parent_type] @comment string

@type类型标记注解

完整格式:---@type {my_type}[|other_type] @comment string

@param参数类型标记注解

完整格式:---@param {param_name} {my_type}[|other_type]@comment string

@return函数返回值注解

完整格式:---@return {my_type}[|other_type] @comment string

@field属性注解

完整格式:---@fieldpublic|protected {my_field} {field_type}[|other_type] @comment string

数组类型

完整格式:---@typeMY_TYPE[]

字典类型

完整格式:---@typetable<KEY_TYPE, VALUE_TYPE>

函数类型

完整格式:---@typefun(param:MY_TYPE):RETURN_TYPE

所以平时自己写lua 代码这些注解最好都添加! 作为一种规范,也便于阅读!

类似于这样的示例代码:

https://tangzx.github.io/emmydoc/annotations/example.html

注解好像能解决现有的lua 中API ,

如果我们要访问Unity等相关API怎么办?      加入qq群, 他们有解决办法

qq群:  文件 -》  其它  中有  “UnityLuaAPI.zip”  可以下载 。  如果要看他是怎么生成的, 可以看视频:

qq群:  文件 -》  文档   中有“IDEA+EmmyLua开发lua的教程.mp4” 视频中会介绍,生成需要 tolua 的框架在Unity中生成。   这个其实生成越多越全越好,反正也不会实际包含在项目中!

下载完成后拷贝到不会被删除的路径下, lua安装环境变量位置或者lua项目里都可以。     回到 IDEA , File ->  Project Structure

还是回到  main.lua  脚本中: 输入

---@type UnityEngine.GameObject

local  go

这样在使用  go 变量的时候就会看到他的代码提示了!

还比如定义如下函数

local function test(trans)

end

将光标 定位到  trans 上 , 快捷键 “Alt + Enter”

选择  “Create  parameter annotation ” 为参数添加注解, 其中 输入的UnityEngine.Transform 会有代码提示。

---@param trans UnityEngine.Transform

local function test(trans)

end

这样在函数内访问  trans 变量就爽了!!!

有什么问题加入他们的群  讨论吧!

=1=============================================================

其他lua工具推荐 http://blog.csdn.net/visualcatsharp/article/details/37653107

=2============================================================

设置sources时候,要从最上层的LuaScripts一直往下把子文件全部设置了,才可以调试成功

并且刚开始的项目层我选的是Assets

现学现卖】IntelliJ+EmmyLua 开发调试Unity中Xlua的更多相关文章

  1. 关于火狐浏览器在开发调试过程中,出现javascript:void(0)的状态

    关于火狐浏览器在开发调试过程中,出现javascript:void(0)的状态 由于火狐浏览器没有安装 Adobe Flash Player 19 NPAPI这个插件 安装好了之后就可以直接运行了

  2. 现学现卖——Keil uVision 使用教程

    Keil uVision 使用教程 1.如果有旧的工程在,先关闭旧工程.Project -> Close Project2.新建工程.Project -> New uVision Proj ...

  3. 现学现卖——VS2013 C#测试

    VS2013 C#测试 首先安装Unit Test Generator.方法为:工具->扩展和更新->联机->搜索“Unit Test Generator”,图标为装有蓝色液体的小试 ...

  4. 程序猿的日常——Mybatis现学现卖

    最近有一个小项目需求,需要用spring mvc + mybatis实现一个复杂的配置系统.其中遇到了很多不太常见的问题,在这里特意记录下: 主要涉及的内容有 事务 多表删除 插入并返回主键 1 sp ...

  5. 【现学现卖】th:href标签动态路径设置,thymeleaf获取session中的属性值

    update:2020-02-28:按道理来说这个功能在前后端分离的时候应该不怎么用的上,基本到现在我还是没遇到过有这样的需求,不过也是一种方法就是.th:href="@{/{role}/l ...

  6. 【现学现卖】python小爬虫

    1.给小表弟汇总一个院校列表,想来想去可以写一个小爬虫爬下来方便些,所以就看了看怎么用python写,到了基本能用的程度,没有什么特别的技巧,大多都是百度搜的,遇事不决问百度啦 2.基本流程就是: 用 ...

  7. java高并发系列 - 第27天:实战篇,接口性能成倍提升,让同事刮目相看,现学现用

    这是java高并发系列第27篇文章. 开发环境:jdk1.8. 案例讲解 电商app都有用过吧,商品详情页,需要给他们提供一个接口获取商品相关信息: 商品基本信息(名称.价格.库存.会员价格等) 商品 ...

  8. 『现学现忘』Git对象 — 16、Tree对象详解

    目录 1.Tree对象介绍 2.Tree对象说明 (1)初始化一个新的本地版本库 (2)创建一个树对象(重点) (3)创建第二个文件(重点) (4)将第一个树对象加入暂存区,使其成为新的树对 3.总结 ...

  9. Django学习笔记(现学现写,实时更新)

    说明:我是先上手做一些简单的例子,然后在尝试的过程中理解Django的原理,笔记也是按这个思路来的. 一.Django结构与基本文件介绍 1. django-admin.py 工程管理工具,主要用于创 ...

随机推荐

  1. window7 Oracle卸载步骤

    完全卸载oracle11g步骤:1. 开始->设置->控制面板->管理工具->服务(或 运行 services.msc) 停止所有Oracle服务.2. 开始->程序-& ...

  2. springcloud提供开放api接口签名验证

    一.MD5参数签名的方式 我们对api查询产品接口进行优化: 1.给app分配对应的key.secret 2.Sign签名,调用API 时需要对请求参数进行签名验证,签名方式如下: a. 按照请求参数 ...

  3. Oracle累计函数

    今天遇到一个客户的报表需求,在shipment的报表中要查看该shipment中的每个PO的采购数量,当前shipment的出货数量以及累计的所有出货数量. 要有累计的出货数,并且是要有顺序的累计出货 ...

  4. Windows下查看进程状态/信息

    任务管理器 tasklist pslist(https://docs.microsoft.com/en-us/sysinternals/downloads/pslist) Process Explor ...

  5. vs2015+opencv3.3.1+ maxflow-v3.01 c++实现Yuri Boykov 的Interactive Graph Cuts

    出的结果不理想. 感觉是tlink的权重的计算有问题,以及参数的设置.三个可设置参数是后面的 i j k  .如果你找到了一组好参数请告诉我. 下载地址 http://download.csdn.ne ...

  6. 【bzoj3576】[Hnoi2014]江南乐 数论分块+博弈论

    Description 小A是一个名副其实的狂热的回合制游戏玩家.在获得了许多回合制游戏的世界级奖项之后,小A有一天突然想起了他小时候在江南玩过的一个回合制游戏. 游戏的规则是这样的,首先给定一个数F ...

  7. [BZOJ2879][Noi2012]美食节(费用流)

    题目描述 CZ市为了欢迎全国各地的同学,特地举办了一场盛大的美食节.作为一个喜欢尝鲜的美食客,小M自然不愿意错过这场盛宴.他很快就尝遍了美食节所有的美食.然而,尝鲜的欲望是难以满足的.尽管所有的菜品都 ...

  8. scrollView - tableView - collectionView 滚动视图的滚动速度

    介绍: 每次滚动都会触发 didScroll 这个方法, 每次滚动都会有一个偏移量,滚动的快慢决定每一次偏移量的大小,可以通过两次滚动偏移量差,判断速度,从而根据速度大小对导航栏做一些操作 { CGF ...

  9. SQL语句之表操作

    SQL语句系列 1.SQL语句之行操作 2.SQL语句之表操作 3.SQL语句之数据库操作 4.SQL语句之用户管理 写在前面 在上一篇博文里面我整理了“行”级别的操作,分别是“增(insert).删 ...

  10. C++_类入门3-嵌套类

    可以将类B声明在另一个类中.在另一个类A中声明的类B被称为嵌套类(nested class). 类A的成员函数可以创建和使用嵌套类B的对象. 当且仅当声明为公有部分时,才能在类A的外面使用嵌套类.而且 ...