Lua UI 文本 == 带或的多个字符串

Lua UI Text == multiple string's with or's

现在我是 lua 的新手,需要一点帮助这个脚本检查播放器 UI 上的一些文本,如果它等于一件事,它就会工作,例如:game:GetService("Players").LocalPlayer.PlayerGui.Main.Border.ClassLabel.Text == "UNIVERSELORD" 但是,如果我添加 or game:GetService("Players").LocalPlayer.PlayerGui.Main.Border.ClassLabel.Text == "UNIVERSELORD" or "TANKTOP" 则不起作用,无论如何它最终都会这样做,而且我不确定为什么,但是如果我只输入一个名字它会起作用,我将不胜感激,谢谢!

由于缺少详细信息,几天前您已经收到 same question closed。不清楚 为什么 你想在文本中添加“或”,所以你需要清楚地解释并提供一个例子,在一些上下文中,这种用法会有意义。

就“或”语句而言,它不会产生您想要的结果,因为它 returns 第一个被评估为非 false 的结果,所以当您有 1 or 2 表达式,结果是 1,因为它是从左到右求值的,这不是 false 结果。同样,在您的情况下,表达式 "UNIVERSELORD" or "TANKTOP" 的计算结果为 "UNIVERSELORD",因为它是遇到的第一个非 false 值。

不幸的是,没有人可以告诉您如何将其更改为 ,因为问题中没有足够的详细信息来说明您的目标。可能是 XY Problem.

[已更新] 根据您的评论,您需要将 or 分成两个完整的比较:game:GetService("Players").LocalPlayer.PlayerGui.Main.Border.ClassLabel.Text == "UNIVERSELORD" or game:GetService("Players").LocalPlayer.PlayerGui.Main.Border.ClassLabel.Text == "TANKTOP"

在 Lua 中,任何不是 nilfalse 的值都被认为是真实的。

所以在

if (game:GetService("Players").LocalPlayer.PlayerGui.Main.Border.ClassLabel.Text == "UNIVERSELORD" or "TANKTOP") then
  getgenv().Spinloop = false print("Stopped!") return 0;
end 

"TANKTOP" 是一个字符串,因此是一个真值。

or-ing 任何具有真值的东西总是真。所以 game:GetService("Players").LocalPlayer.PlayerGui.Main.Border.ClassLabel.Text 是否等于 "UNIVERSELORD" 并不重要。结果总是正确的。因此,无论文本值如何,您的 if 条件始终得到满足。