2017-02-07 4 views
1

Хорошо, у меня есть проблема. Я использую оператор IF. Кажется, он не работает так, как должен. Он отлично работает без || условие, но с || это, кажется, только тянуть текст под и не запустить ELSE ...Почему это утверждение IF работает в Unity?

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; 
    } 
    } 

Если я удалить || «Иллюминаты», он прекрасно работает ... но как это он присваивает fateText.text к «Бежим Весь мир." а не myRandomString

EDIT REPORT: Хорошо. .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; 
} 
} 
+0

Вы должны изменить заявление как, 'если (inputText.text == "иллюминаты" || inputText.text == "Illuminati")' Js основы. Также лучше использовать === для точного сравнения. Если вы хотите сделать любое сравнение в одном и том же выражении, сделайте это как 'if ((inputText.text ==" illuminati "|| inputText.text ==" Иллюминаты ") || inputText.text ==" blalabla ") ' –

+0

Я добавил ELSE IF. Я пробовал это раньше, но у меня было === вместо ==. Теперь он отлично работает! Если кто-нибудь знает, как упростить этот код, добавив в массив симулирующие слова, такие как Люцифер, Сатана, Дьявол в массиве, а затем используя этот массив в одном выражении IF, дайте мне знать! Спасибо - BTW im не поклонник дьявола или ничего подобного. Я создаю игру Magic 8 Ball для удовольствия ... но в игре есть ужас в природе. –

ответ

2

условие должно быть:

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

В противном случае, вы можете установить, чтобы опустить весь текст таким образом, чтобы быть случай-независим:

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

Еще лучше, чтобы сравнить необходимо использовать функцию Equals (C#, хотя)

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

EDIT дальше к вашему EDIT:

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; 
} 
+0

Большое вам спасибо! .ToLower() отлично работает! –

+0

Хорошо.ToLower() отлично поработал, теперь я столкнулся с проблемой, когда, когда я добавляю несколько IF, он просто обходит IF и просто запускает ELSE ... любые идеи? –

+0

String.Equals должны быть доступны в единственном экземпляре ... – NPSF3000

1

Попробуйте изменить условия от:

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

Для этого:

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

Я не думаю, что вы можете как это.

Кроме того, вы можете просто использовать строчные буквы для упрощения вашего состояния. Поэтому я считаю, что вы можете сделать следующее.

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

исправил его, хороший вызов – Developer

+0

'ToLower()' и 'ToLowercase()' сделать то же самое – Developer

+0

Да, проблем нет – Developer

0

Если вы хотите проверить несколько condidtions в одном случае заявление сделать это следующим образом:

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

это будет проверять, либо один возврат верно, но вы также можете проверить, если несколько операторов являются истинными с помощью:

if (var1 == condition1 && var2 == condition2){} 
Смежные вопросы