当前位置: 代码迷 >> 综合 >> UE4 + UnLua + VSCode + LuaPanda调试
  详细解决方案

UE4 + UnLua + VSCode + LuaPanda调试

热度:54   发布时间:2023-11-07 17:38:17.0

虚幻4 UnLua调试教程

  • 0、写在前面
  • 1、下载所需环境
    • UnLua
      • UnLua简述
      • 查看UnLua中的Lua版本
    • Lua
    • LuaSocket
    • LuaPanda
  • 整理
    • 已准备的环境
    • 调试

0、写在前面

本次教程,使用的demo为UnLua提供。下载UnLua源码后,解压出来的就是UnLua的demo工程了。

1、下载所需环境

UnLua

下载unlua:unlua仓库

UnLua简述

UnLua是由Tencent提供的,是针对虚幻运行Lua的解决方案。

查看UnLua中的Lua版本

由于后续需要编译LuaSocket,因此在此需要知道UnLua所用的Lua版本是多少。

步骤:

  1. 解压UnLua,打开uproject工程。
  2. 在任意的关卡中,例如:Tutorials/HelloWorld关卡,在Script/Tutorials目录下找到01_HelloWorld.lua,修改脚本如下。
  3. 运行游戏,查看控制台中Lua的版本(非常关键)
require "UnLua"local Screen = require "Tutorials.Screen"local M = Class()-- 所有绑定到Lua的对象初始化时都会调用Initialize的实例方法
function M:Initialize()print("unlua version ===> ".._VERSION)local msg = [[Welcome to zzw Unreal!]]print(msg)Screen.Print(msg)
endreturn M

Lua

  1. 下载Lua环境:Lua下载官网,需要与UnLua版本一致。
  2. 编译Lua的动态库和静态库,此步骤自己搜索教程。

LuaSocket

  1. 下载LuaSocket环境:LuaSocket仓库。
  2. 使用刚刚编译过的Lua(要Lua版本和UnLua的版本是一致的)去编译LuaSocket。这里的坑比较多,可能会遇到UnLua版本比较高,而LuaSocket版本较低等一系列的问题。

LuaPanda

  1. 下载LuaPanda代码:LuaPanda仓库。
  2. 在VSCode中安装LuaPanda插件。
  3. 将LuaPanda仓库中Debugger/LuaPanda.lua文件拷贝到与demo中的Script/UnLua.lua同级。

插件的launch.json配置如下:

{
    "version": "0.2.0","configurations": [{
    "type": "lua","request": "launch","tag": "normal","name": "LuaPanda","description": "通用模式,通常调试项目请选择此模式 | launchVer:3.2.0","cwd": "${workspaceFolder}","luaFileExtension": "","connectionPort": 8818,"stopOnEntry": false,"useCHook": true,"autoPathMode": true},{
    "type": "lua","request": "launch","tag": "independent_file","name": "LuaPanda-IndependentFile","description": "独立文件调试模式,使用前请参考文档","luaPath": "","packagePath": [],"luaFileExtension": "","connectionPort": 8820,"stopOnEntry": true,"useCHook": true}]
}

整理

已准备的环境

  1. Lua的静态库和动态库以及头,并且Lua的版本与UnLua版本保持一致。
  2. LuaSocket编译出来的socket文件夹下的core,此socket版本与UnLua版本保持一致。
  3. VSCode已经配置好LuaPanda环境。
  4. UnLua的demo中的LuaPanda.luaUnLua.lua同级。

调试

  1. LuaSocket编译出来的socket文件目录拷贝到一个比较方便的地方,例如:D:/luasocket目录下。
  2. 在需要被调试的lua文件中加入:package.cpath = package.cpath .. ";D:/luasocket/?.dll"require("LuaPanda").start("127.0.0.1",8818)。笔者是将这两行直接写入到UnLua.lua文件的首部。