• 产品手册
  • 编辑器功能手册
  • 调试与性能优化
  • LUA开发工具
  • LUA新项目的初始化

LUA新项目的初始化

基本原理

书接上回,我们的Lua开发工作区位于“D:\Y3Map\maps\EntryMap\script”。这里的 "EntryMap" 是你地图工程中的主地图,也就是启动游戏时默认加载的地图。

它的 "script" 目录则是专门存放Lua代码的。

当游戏启动后,会首先加载 "script/y3" 中的所有文件,这个文件夹被称为 "Y3库" 或者 "LuaLib" 。它由官方维护,因此你不应该直接修改里面的文件。

之后游戏会加载 "script/main.lua" 这个文件,你可以在这个文件中做你的游戏逻辑。不过你应该只在加载过程中进行定义行为,具体的游戏逻辑应该在 “游戏-初始化” 事件之后再开始执行。

工程结构

CreateLuaProject1

一个新初始化的项目有一些自带的文件,这里简单解释一下他们的用途:

  1. ".log" 在游戏中打印的日志会记录到这个文件夹中。使用 "." 开头是为了保证打包发布地图时排除此文件夹。
  2. ".vscode" 你VSCode在此工作区中的配置
  3. "log" 一些生成的内容但是需要打包进地图。这个功能目前是为了兼容保留的,未来这个文件夹会被删除。
  4. "y3" 官方维护的Y3库代码,请勿修改内容(后续会给出推荐的patch方式)
  5. "y3-helper" 由《Y3开发助手》生成的内容,请勿修改内容,否则下次生成会覆盖掉
  6. ".gitignore" 当前目录的git排除配置,如果你想用git管理此目录会用得上
  7. ".luarc.json" Lua语言服务器的配置
  8. "main.lua" 运行入口

你在创建自己的文件或文件夹时可以自由选择命名,但是建议不要使用 "y3" 开头,万一未来官方增加新的文件夹呢。

推荐设置与准备工作

如果你是刚刚接触VSCode,建议在扩展商店中安装简体中文。因为后文的VSCode设置均基于中文界面进行演示。

CreateLuaProject2

在VSCode的设置中启用 auto fetch功能,这样当Y3库更新后会收到推送。此时点击“同步”按钮即可更新Y3库。

CreateLuaProject3

当你开始编写代码时,建议建一个新的文件如 "init_all.lua" ,然后在 "main.lua" 里通过 "require 'init_all'" 来加载真正的初始化文件。

这样当你的 "init_all.lua" 包含了语法错误或是在加载时发生了运行错误,你可以在 ".log" 目录下的日志里找到相关的记录。

日志

在代码中使用 "log.info('日志内容')" 写日志,在开发模式中日志会写到脚本目录的 ".log/lua_player01.log" 中。在平台上运行时日志会写到地图目录的 "custom/lua_player01.log" 中。文件名后两位数字代表你在游戏中的玩家ID,在本地多开时会生成多个日志文件。在平台上运行时,完整的日志路径大概是 ".../kkduizhan/Games/y3/2.0/game/LocalData/etc/maps/(加密地图名)/custom/lua_player01.log" 。

如果你只是想快速的临时看一下,可以直接使用 "print('内容')" ,这些内容会直接在游戏内显示。上传地图前别忘了去掉 "print" 。