【现学现卖】IntelliJ+EmmyLua 开发调试Unity中Xlua

原创 2017年08月23日 23:45:40

孙广东  2017.8.23   

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 变量就爽了!!!

 

 

 

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

 

 

 




版权声明:本文为博主原创文章,未经博主允许不得转载。出自 游戏开发实验室_孙广东 举报

相关文章推荐

Unity-Lua调试-EmmyLua

前言 现在很多的项目都会引入热更与热修复的技术来研发,热更的形式有很多方案,目前采用较多的是Unity+Lua的形式。所以本文主要介绍Unity+Lua的调试环境搭建。 准备工作 下载并...

在Unity中调试Lua:IntelliJ IDEA + EmmyLua

本文介绍了如何在Unity中调试Lua, 具体方案是使用IntelliJ IDEA + EmmyLua。步骤 下载并安装IntelliJ IDEA https://www.jetbrains.com/...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

[ulua]开发工具介绍

[ulua]开发工具介绍 之前有对ulua有过粗浅的了解,可是目前的项目组并没有使用lua来做热更,上线之后客户端涉及到要更改代码的bug都无法处理,而严重的bug往往只能临时关闭相关模块进行处理,重...

Unity中解析ini配置文件----INIParser

大家好,我是孙广东。   转载请注明出处:http://blog.csdn.net/u010019717更全的内容请看我的游戏蛮牛地址:http://www.unitymanual.com/space...

Unity中INI配置文件的操作工具类

Unity中INI配置文件的操作工具类 INI文件格式是某些平台或软件上的配置文件的非正式标准,以节(section)和键(key)构成。下面是对INI文件操作的常见工具类。

常见C++笔试题目整理(含答案)10

网上流传的一份常见C++笔试题目汇总——终于迎来了本系列连载的最后一期,非常感谢一直跟下来的同学,希望大家都能有所收获吧~ 题目79-84 ==============================...

腾讯十周年活动热线电话是

★腾 讯 备 案 电 话【0755<3303<7551】抽 奖 二 线【95013<2195<0586】活 动 热线★抽奖腾讯备案电话【0755↗3303-7551】抽 奖 二 线【0755↗3303...

Unity3D:spine使用

http://www.taikr.com/course/200/learn#lesson/2671 http://www.cnblogs.com/hellohuan/p/3716346.html ...

Android Studio 导出Unity插件(剩余电量、信号强度)

因为游戏时全屏的 , 所以需要游戏能更加的人性化提示一些信息在界面上。                   &...

Unity获取安卓电量和时间

本文主要是解决了Unity获取安卓电量的问题,顺便也把获取时间代码完善了。Unity想获取电量很多人是Unity跟安卓互发消息并且还要导入jar包,我在项目的时候老大发了一段神奇代码可以直接获取安卓手...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)