【现学现卖】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 变量就爽了!!!

 

 

 

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

 

 

 




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

实战Unity3D开发:从认识界面到游戏demo

本文是51CTO上的关于Unity3D移动开发游戏的知识点汇总。内容包括:(1)Unity3D开发基础;(2)Unity3D for iOS开发;(3)Unity3D for Android开发;...
  • wave_1102
  • wave_1102
  • 2015年05月22日 14:38
  • 1823

在Unity中调试Lua:IntelliJ IDEA + EmmyLua

本文介绍了如何在Unity中调试Lua, 具体方案是使用IntelliJ IDEA + EmmyLua。步骤 下载并安装IntelliJ IDEA https://www.jetbrains.com/...
  • David_Dai_1108
  • David_Dai_1108
  • 2017年07月04日 00:23
  • 7363

Unity-Lua调试-EmmyLua

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

LUA Glider,最好的LUA IDE,没有之一

这几天都在寻找一个好的LUA IDE,几乎将整个互联网找了个 http://www.mydevelopersgames.com/Glider...
  • visualcatsharp
  • visualcatsharp
  • 2014年07月10日 12:41
  • 35129

LuaFrameWork学习----1

现在的游戏都需要热更新,从现在开始学习lua的toLua框架来实现热跟新。 废话不说,俗话说得好磨刀不误砍柴工,要使用lua语言,就需要一个好的编辑器,现在网上常用的编辑器有一下几中: ...
  • baidu_39447417
  • baidu_39447417
  • 2017年10月19日 14:23
  • 184

Unity编辑器扩展

unity是一个强大的编辑器。 我们可以通过一些代码扩展它,达到提高工作效率的目的。在开始写代码之前, 我们需要先知道一些前置知识。 命名空间。Unity的运行时和编辑器类分别存储在不同的Assemb...
  • David_Dai_1108
  • David_Dai_1108
  • 2017年05月30日 13:20
  • 560

lua调试的工具选择

最近看到一个关于vs的lua调试插件, 装了vs2012试了下, 忍不住发此文总结下lua各种调试工具 Decoda     这是现今地球上调试lua5.1最方便的工具, 没有之一. 强大...
  • Kaitiren
  • Kaitiren
  • 2014年10月29日 19:19
  • 6231

intellij idea开发lua

有cocos2dx-lua项目要维护。试了很多IDE全部都不行,暂时还是以intellij idea+ emmylua插件来开发。至少idea的快捷键我比较熟悉 1.intellij idea装em...
  • wulong710
  • wulong710
  • 2018年01月10日 20:56
  • 212

quick-cocos2d-x开发环境Lua for IntelliJ IDEA的安装

比较了sublime text2、LDT、Lua for IntelliJ IDEA之后,发现Lua for IntelliJ IDEA的代码提示支持得最好,现分享其安装过程如下: 下载Intel...
  • kyo7552
  • kyo7552
  • 2013年11月29日 01:02
  • 12069

[Unity热更新]调试lua

ulua插件自带的例子挺好的,收藏一下方便以后查阅~当前使用的ulua版本是1.08,unity版本是4.6.3。 01_HelloWorld using UnityEngine; using ...
  • lyh916
  • lyh916
  • 2015年04月13日 14:39
  • 4996
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【现学现卖】IntelliJ+EmmyLua 开发调试Unity中Xlua
举报原因:
原因补充:

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