编辑Roblox模块执行错误
2016-4-6 2:29:49
收藏:0
阅读:63
评论:1
-- 这是Roblox自己制作的一些代码:
-- 设置我们将返回给ModuleScript的脚本的表格。
local PlayerStatManager = {}
-- 用于保存当前会话中所有玩家信息的表格。
local sessionData = {}
-- 其他游戏中的脚本可以调用的函数来更改玩家的状态。这个
-- 函数被存储在返回的表格中,以便外部脚本可以使用它。
function PlayerStatManager:ChangeStat(player, statName, changeValue)
sessionData[player][statName] = sessionData[player][statName] + changeValue
end
-- 将玩家添加到sessionData表中的函数。
local function setupPlayerData(player)
sessionData[player] = {Money = 0, Experience = 0}
end
-- 将setupPlayerData绑定到PlayerAdded中,在玩家加入时调用它。
game.Players.PlayerAdded:connect(setupPlayerData)
-- 将PlayerStatManager表格返回给外部脚本以便访问。
return PlayerStatManager
--------------------------------------------------------------------------------
-- 需要ModuleScript以便我们可以更改玩家状态
local PlayerStatManager = require(game.ServerStorage.PlayerStatManager)
-- 玩家加入后,我们会周期性地给玩家金钱和经验
game.Players.PlayerAdded:connect(function(player)
while wait(2) do
PlayerStatManager:ChangeStat(player, 'Money', 5)
PlayerStatManager:ChangeStat(player, 'Experience', 1)
end
end)
当我运行这两个脚本时,它可以完美运行,在ChangeStat函数中添加print(sessionData[player][statName]),但是当我在模块脚本中移除了game.Players.PlayerAdded:connect(setupPlayerData)部分,它就停止工作了。我认为模块脚本不会执行未被调用的代码,如果是这种情况,应该延迟game.Players.PlayerAdded:connect(setupPlayerData)部分而不是将其作为函数,因为玩家已经加入了,因此它不会触发吗?
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
require函数执行所需的代码。如果不执行
return PlayerStatManager语句,将无法通过require获取表格。因此,删除以下内容
--将setupPlayerData绑定到PlayerAdded,在玩家加入时调用它。 game.Players.PlayerAdded:connect(setupPlayerData)将导致已添加的玩家不能适当初始化。
这基本上意味着:添加新玩家时调用
setupPlayerData。其中setupPlayerData表示:将一组新的统计数据给予player。当你删除了那行代码之后,没有玩家的统计数据。如果你没有统计数据,你不能增加它们的值...
因此,很显然你没有理解代码在你修改之前的作用。因此,你无法理解为什么你的修改会导致问题。
如果你不理解一个系统,你有可能会幸运地完成,但在大多数情况下会失败。