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


    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    他所在XluaSrc 文件夹下, 要添加这个源。   结果是不行的

    “如果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

  • 相关阅读:
    将B表中符合条件的数据更新到A表中
    oracle : 无法更新 ON 子句中引用的列
    查看Oracle 版本信息
    将分组的其他内容以字符串形式展示
    将datatable 保存为 Excel文件(高效率版本)
    winform 中一个窗口嵌套到另一个窗口
    一个切换bool属性的小方法
    html5相关知识点的总结(有一些错误或者不足的地方)
    get和post的区别
    cookie的作用
  • 原文地址:https://www.cnblogs.com/sanyejun/p/8047049.html
Copyright © 2020-2023  润新知