• [原创]UnLua Emmylua UE4开发环境搭建


    前言

      公司开发的第二个虚幻4项目已经上线了,慢慢趋于稳定。回想起开荒的日子,历历在目。从引擎脚本的选择,各工具(导表,协议生成...)的重构、开发, 引擎扩展(多骨骼支持,Notify扩展,技能编辑器...),UMG蓝图的设计、适配,战斗Demo的创建,开发流程的接轨,功能堆砌,人员一波波的更迭...

      回到正题,18年中,立项的时候,UE4的脚本语言都在实验期,没有成熟的,Python、JS V8、Lua等等开源的脚本也都测试过,最终选择了Lua,主要是基于:

    1、Lua语言在游戏业的广泛引用性。确认不远的将来会有更稳定、程序的框架

    2、UE3老项目战斗Lua的继承

      最终框架使用了unreal.lua, https://github.com/asqbtcupid/unreal.lua, 感谢大大。最近也一直在关注腾讯游戏的lua开源框架,slua和UnLua,现在有时间了,所以来研究下,为新项目最准备。

    一、相关源码获取

    1,UnLua: https://github.com/Tencent/UnLua

    2,Emmylua: https://github.com/EmmyLua/IntelliJ-EmmyLua

    3,LuaSocket: https://github.com/diegonehab/luasocket

    4,Lua5.3: https://www.lua.org/ftp/

    5,MobDebug: https://github.com/pkulchenko/MobDebug/tree/master/src

    二、LuaSocket搭建

    1、编译Lua5.3.4

      Lua源码目录创建install.bat

    REM open `Developer Command Prompt For Visual Studio`
    REM install.bat 5.3.4
    
    %~d0
    cl /MD /O2 /c /DLUA_BUILD_AS_DLL *.c
    ren lua.obj lua.o
    ren luac.obj luac.o
    link /DLL /IMPLIB:lua53.lib /OUT:lua53.dll *.obj
    link /OUT:lua.exe lua.o lua53.lib
    lib /OUT:lua53-static.lib *.obj
    link /OUT:luac.exe luac.o lua53-static.lib
    
    del *.obj
    del *.o
    
    REM bin
    if exist ..in (
        rd /s /q ..in
    )
    mkdir ..in
    move *.exp ..in
    move *.dll ..in
    move *.exe ..in
    
    REM lib
    if exist ..lib (
        rd /s /q ..lib
    )
    mkdir ..lib
    move *.lib ..lib
    
    REM include
    if exist ..include (
        rd /s /q ..include
    )
    mkdir ..include
    copy lauxlib.h ..include
    copy lua.h ..include
    copy lua.hpp ..include
    copy luaconf.h ..include
    copy lualib.h ..include
    
    PAUSE

      启动x64 vs命令行,执行install.bat

      

       bin目录加入Path

    2、编译LuaSocket

      a、打开sln,选择x64,指定Lua的include和lib目录,编译生成core.dll

      b、复制socket文件夹(带着core.dll)到lua bin目录,这个文件夹后续也要复制在游戏引擎目录

      c、复制src中的lua文件到lua bin目录

    3、测试

      

    三、Emmylua搭建

    1、安装IntelliJ IDEA

    2、编译Emmylua

      Emmylua源码目录下: gradlew buildAll

    3、IDEA 安装Emmylua

      

      

    4、设置IDEA配置

      a、取消代码拼写错误检测

      

     5、启动debug调试

      新建运行配置

      

      运行

          

    四、引擎、UnLua配置

    1、UnLua源码置于Plugins下

    2、复制socket文件夹(带着core.dll)复制到 EngineEngineBinariesWin64

    3、Lua脚本ContentScript目录下,创建debugger文件夹,将LuaSocket源码下的lua复制进来

    4、MobDebug.lua也复制进来,修改Socket路径

     5、UnLua.lua中require MobDebug

    五、OK,IDEA加上断点调试

  • 相关阅读:
    ceph
    分布式网关层
    function declarations are hoisted and class declarations are not 变量提升
    js为Object对象动态添加属性和值 eval c.k c[k]
    方法就是一种变量
    static 不被实例调用
    WePY根据环境变量来改变运行时的参数
    函数类型实现接口——把函数作为接口来调用
    为什么需要onRoute函数?
    504 Gateway Timeout Error 502 Bad Gateway
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/11990776.html
Copyright © 2020-2023  润新知