[Unity实战]一个好用的lua调试工具vscode-luaide-lite插件 好用到飞起..[Debug][开箱可用][xlua]

  • 简介
  • 官方例子:xlua/tolua/slua/lua5.1等
  • 1.安装
  • 2.配置
  • 3.使用
  • 3.1启动unity
  • 3.2vscode-debug:Unity Editor
  • 3.3vscode-debug:
  • 3.4运行unity进入断点...
  • 4.核心代码:
  • 5.github地址


简介

lua代码转换成ts代码_ide

luaide-lite

Author: Wells Hsu
Email: wellshsu@outlook.com
Github: https://github.com/wellshsu/luaide-lite

Features | 功能特性

有问题请在github->issue中反馈,不定期查看.
legacy的解析库不再维护(推介使用emmy), debug和format模块会继续维护.
若emmy解析库不生效,请检查java环境是否配置.

【代码编写】

标准格式化: 与 IntelliJ IDEA 平台的 EmmyLua 格式化结果一致, 参考VS的格式化标准, 大文件格式化更快.
批量格式化: 选中文件/文件夹, 点击'Lua/Format File(s)'以格式化这些文件.
代码注解: 引用自 EmmyLua, 使用参考 https://emmylua.github.io/annotation.html
智能提示: 支持查找引用, 重构, 定义跳转, 文件符号, 变量颜色高亮等.

【代码调试】

多平台调试: 支持cocos, lua51, tolua, slua, xlua 等, 调试示例在群文件或Github中下载, 环境配置请参考各示例的README.md文件.
单文件调试: 支持使用Lua51调试demo.
条件断点: 支持设置表达式以及断点次数.

【辅助功能】

解析库切换: 设置 'luaide-lite.core' 以指定代码解析工具, emmy-使用emmylua库解析工程(推介使用), legacy-使用既有版本解析工程(不再维护).
To Typescript: 将Lua代码转换为Typescript.
To CSharp: 将Lua代码转换为CSharp.
模板文件: 在设置中添加 'templateDir' 和 'templateDefine' 以指定模板文件目录以及全局文本替换字段, 在工程结构目录右键选择 'Lua/New Template' 以创建模板文件.

官方例子:xlua/tolua/slua/lua5.1等

lua代码转换成ts代码_lua_02

1.安装

VSCODE->Extensions->luaide-lite v0.3.1安装

2.配置

.vscode\launch.json

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [

        {
            "name": "Unity Editor",
            "type": "unity",
            "path": "${workspaceFolder}/Library/EditorInstance.json",
            "request": "launch"
        },

        {
            "name": "Unity-xlua",
            "type": "lua",
            "request": "attach",
            "runtimeType": "Unity",
            "localRoot": "${workspaceRoot}",
            "fileExtNames": [
                ".lua",
                ".txt",
                ".lua.txt",
                ".bytes"
            ],
            "port": 7003,
            "printType": 1
        },
    ]
}

3.使用

3.1启动unity

lua代码转换成ts代码_lua代码转换成ts代码_03

3.2vscode-debug:Unity Editor

![在这里插入图片描述](

3.3vscode-debug:

lua代码转换成ts代码_lua_04

3.4运行unity进入断点…

lua代码转换成ts代码_lua_05

4.核心代码:

Main.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
using System.IO;

public class Main : MonoBehaviour
{
    public LuaTable Table;
    public LuaFunction AwakeFunction;
    public LuaFunction StartFunction;
    public LuaFunction UpdateFunction;
    public LuaFunction OnDestroyFunction;

    void Awake()
    {
        string dir = Application.dataPath + "/LuaScripts/";
        LuaEnv luaenv = new LuaEnv();
        luaenv.AddLoader(new LuaEnv.CustomLoader((ref string f) =>
        {
            f = f.Replace(".", "/");
            f = dir + f + ".lua";
            return File.ReadAllBytes(f);
        }));
        luaenv.DoString("require 'Main'");
        Table = luaenv.Global.Get<LuaTable>("Main");
        AwakeFunction = Table.Get<LuaFunction>("Awake");
        StartFunction = Table.Get<LuaFunction>("Start");
        UpdateFunction = Table.Get<LuaFunction>("Update");
        OnDestroyFunction = Table.Get<LuaFunction>("OnDestroy");

        if (AwakeFunction != null) { AwakeFunction.Call(gameObject); }
    }

    void Start()
    {
        if (StartFunction != null) { StartFunction.Call(); }
    }

    void Update()
    {
        if (UpdateFunction != null) { UpdateFunction.Call(); }
    }

    void OnDestroy()
    {
        if (OnDestroyFunction != null) { OnDestroyFunction.Call(); }
    }
}

Main.lua

local BREAKINFOFUNC, XPCALLFUNC = require("LuaDebug")("localhost", 7003)
Main = {}

function Main.Awake(gameObject)
    print("Main.Awake")
end

function Main.Start()
    print("Main.Start")
end

function Main.Update()
    
end

function Main.OnDestroy()
    print("Main.OnDestroy")
end

.vs/launch.json

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [

        {
            "name": "Unity Editor",
            "type": "unity",
            "path": "${workspaceFolder}/Library/EditorInstance.json",
            "request": "launch"
        },

        {
            "name": "Unity-xlua",
            "type": "lua",
            "request": "attach",
            "runtimeType": "Unity",
            "localRoot": "${workspaceRoot}",
            "fileExtNames": [
                ".lua",
                ".txt",
                ".lua.txt",
                ".bytes"
            ],
            "port": 7003,
            "printType": 1
        },
    ]
}