local expType = tostring(type1)
local expTypeStat = expType:gsub("Exp", "")
local profileDataExpType = "profile.Data."..expType
在这里,我想更改从配置文件中提取的数据。数据取决于为我正在创建的函数提供的 expType。
例如,type1 类似于 StrengthExp。但是在添加强度时,我想在同一函数中引用强度统计数据本身,因此我使用 gsub 函数从 StrengthExp 中删除 Exp。
要访问玩家的统计数据和经验值,我需要使用 profile.Data.Strength 或 profile.Data.StrengthExp 例如。
if profileDataExpType <= math.round(100 * (expTypeStat / 2)) then
这是函数的一部分,我想使用 profileDataExpType 和 expTypeStat 变量作为代码而不是字符串。
是否有不同的方法来访问正确的 profile.Data,具体取决于为函数提供的 expType?或者有没有办法将该字符串转换为代码?我在网上或文档中找不到任何内容
我尝试编写这样的代码,用 expType 替换数据的实际名称:
if profile.Data.expType <= math.round(100 * (profile.Data.expType/ 2)) then
我在将 expType 转换为字符串之前尝试过此操作,认为它会使用参数 expType 而不是在 profile.Data 中查找名为“expType”的数据
我设法使用 rawget 全局解决了这个问题。这是我分配所需变量的方法:
local expType = tostring(xpType)
local expTypeStat = expType:gsub("Exp", "")
local profileDataExpType = rawget(profile.Data, expTypeStat)
local profileDataExp = rawget(profile.Data, expType)
rawget 获取 profile.Data 表的值并返回你给它的索引值,在本例中为 expTypeStat 和 expType