【问题标题】:Why wont this IF statement work in Unity?为什么这个 IF 语句在 Unity 中不起作用?
【发布时间】:2017-09-29 23:53:18
【问题描述】:

好的,我有问题。我正在使用 IF 语句。它似乎没有按应有的方式运行。没有 || 也可以正常工作条件,但与 ||它似乎只是将文本拉到下面而不运行 ELSE...

var fateText : UI.Text;
var inputText : UI.Text;


 function fateBall () {
        if(inputText.text == "illuminati"||"Illuminati"){
            fateText.text = "We run the entire world. Join us!";
    }else{
  var myRandomString : String = RandomWordString(1);
 fateText.text = myRandomString;
   }
   }

如果我删除 ||“Illuminati”,它会很好用......但是像这样,它会将 fateText.text 分配给“我们运行整个世界”。而不是 myRandomString

编辑报告:好的,.ToLower() 现在工作得很好我遇到了一个问题,当我添加多个 IF 时,它只是绕过 IF 并运行 ELSE...有什么想法吗?

function fateBall () {
    if(inputText.text.ToLower() == "illuminati"){
            fateText.text = "We run the entire world. Join us!";}
     if(inputText.text.ToLower() == "satan"){
                fateText.text = "Lucifer is the Light Bringer. He leads us           against God!";}
     if(inputText.text.ToLower() == "devil"){
            fateText.text = "Lucifer is the Light Bringer. He leads us     against God!";}
    if(inputText.text.ToLower() == "lucifer"){
            fateText.text = "Lucifer is the Light Bringer. He leads us against God!";}

            else{
 var myRandomString : String = RandomWordString(1);
    fateText.text = myRandomString;
 }
 }

【问题讨论】:

  • 您应该将语句更改为if(inputText.text == "illuminati" || inputText.text =="Illuminati") js basics。也更好地使用 === 进行精确比较。如果您想在同一语句中进行任何其他比较,请像 if( (inputText.text == "illuminati" || inputText.text =="Illuminati" ) || inputText.text == "blalabla" )
  • 我添加了 ELSE IF。我之前尝试过,但我有 === 而不是 ==。现在它完美地工作了!如果有人知道如何通过在数组中添加像 Lucifer、Satan、Devil 这样的类似词来简化此代码,那么在一个 IF 语句中使用该数组让我知道!谢谢——顺便说一句,我不是恶魔崇拜者,也不是那样的人。我正在制作一款有趣的 Magic 8 Ball 游戏……但游戏本质上是恐怖游戏。

标签: if-statement unity3d unityscript


【解决方案1】:

条件必须是:

if(inputText.text == "illuminati" || inputText.text == "Illuminati")

否则,您可以设置降低所有文本以区分大小写:

if(inputText.text.ToLower() == "illuminati")

比较字符串的更好方法是使用 Equals 函数(仅限 C#)

if( String.Equals( inputText.text, "illuminati", System.StringComparison.InvariantCultureIgnoreCase)

编辑到你的编辑:

string lowerText = inputText.text.ToLower() ;

if(lowerText == "illuminati")
{
    fateText.text = "We run the entire world. Join us!";
}
else if(lowerText == "satan")
{
    fateText.text = "Lucifer is the Light Bringer. He leads us           against God!";
}
else if(lowerText == "devil")
{
    fateText.text = "Lucifer is the Light Bringer. He leads us     against God!";
}
else if(lowerText == "lucifer")
{
    fateText.text = "Lucifer is the Light Bringer. He leads us against God!";
}
else
{
    var myRandomString : String = RandomWordString(1);
    fateText.text = myRandomString;
}

【讨论】:

  • 好的,.ToLower() 现在工作得很好我遇到了一个问题,当我添加多个 IF 时它只是绕过 IF 并运行 ELSE...有什么想法吗?
  • @Matt Vapes :我已经对您的问题的编辑进一步编辑了我的答案
【解决方案2】:

尝试更改条件:

inputText.text == "illuminati"||"Illuminati"

到这里:

inputText.text == "illuminati"|| inputText.text =="Illuminati"

我认为你不能像这样链接条件。

此外,您可能只想使用小写函数来简化您的条件。因此,我相信您可以改为执行以下操作。

if(inputText.text.ToLower()=="illuminati")

【讨论】:

  • ToLower() 和 ToLowercase() 做同样的事情
  • 是的,没问题
【解决方案3】:

如果您想在一个 if 语句中检查多个条件,请这样做:

if (var1 == condition1 || var2 == condition2){}

这将检查是否有一个返回 true,但您也可以使用以下方法检查多个语句是否为 true:

if (var1 == condition1 && var2 == condition2){}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    相关资源
    最近更新 更多