2015-07-15 2 views
0

Итак, я пытаюсь создать викторину, возможно, самый трудный способ узнать меня, и эта ошибка продолжает появляться (название потока). Это код, кто-нибудь знает, что случилось?Unity не может неявно преобразовывать тип «строка» в «bool»

using UnityEngine; 
using System.Collections; 

public class score : MonoBehaviour { 

public string final_score; 

// Use this for initialization 
void Start() { 

} 

// Update is called once per frame 
void Update() { 

    if (final_score = ("10")) 
    { 
     Application.LoadLevel("Result1"); 
    } 

    if (final_score = ("20")) 
    { 
     Application.LoadLevel("Result2"); 
    } 

    if (final_score = ("30")) 
    { 
     Application.LoadLevel("Result3"); 
    } 

    if (final_score = ("40")) 
    { 
     Application.LoadLevel("Result4"); 
    } 

    if (final_score = ("50")) 
    { 
     Application.LoadLevel("Result5"); 
    } 

    if (final_score = ("60")) 
    { 
     Application.LoadLevel("Result6"); 
    } 

    } 

} 

Это моя главная проблема, но если это вообще возможно, кто-нибудь знает хороший учебник для приложения викторины в единстве? Я использую основные вещи, чтобы создать его сейчас, но я чувствую, что есть способ упростить его, и я не знаю, что это такое. Я нашел несколько уроков, но ни один из них мне не нужен. В моей викторине 8 вопросов, каждый из которых имеет 4 ответа. Мне нужно, чтобы каждый ответ складывался, чтобы определить окончательный результат, которого есть 6. Я использую сцену для каждого вопроса/результата, должен ли я изменить это? Но если бы я это сделал, как бы правильно и правильно ответить на вопросы/ответы? Это моя основная проблема со всей викториной. Как я могу получить вопросы для добавления в разные сцены, чтобы определить результат? Благодаря! Этот проект идет по графику и должен быть сделан завтра, поэтому быстрые результаты будут замечательными! Убедитесь, что исправления/учебники работают на iOS и других мобильных устройствах.

+1

использовать '==' вместо '=' в операторах if – Steve

ответ

0

В дополнение к тому, что ваш оператор сравнения ошибочен, оценка кажется, что она должна быть целым числом.

Вы также можете избежать оператора if, используя словарь или аналогичную структуру данных.

Dictionary<int, string> quiz = 
     new Dictionary<int, string>() 
{ 
    { 10, "Result1" }, 
    { 20, "Result2" }, 
    { 30, "Result3" }, 
    { 40, "Result4" }, 
    { 50, "Result5" }, 
    { 60, "Result6" } 
}; 

void Update (int score) { 
    Application.LoadLevel(quiz[score]); 
} 
+0

Это выглядит великолепно. Проблема теперь в «Словаре» не существует. – NuckG

+0

@NuckG вам нужно добавить 'using System.Collections.Generic;' конечно, что касается вашего второго вопроса, это совсем не ясно, возможно, вы можете отредактировать свой пост и спросите 1 не многие – meda

+0

Хорошо, спасибо. Я задам еще один вопрос, объясняющий это немного больше. – NuckG

3

= operator является оператором присваивания, вам необходимо использовать == operator, который является оператором равенства.

Вашего

final_score = ("10") 

линия и другие линии выполнены в виде

  • правопреемник "10" к вашим final_score переменным
  • вернуть эту строку объект.

Так, если заявление ожидать boolean expression, и нет неявного разговор между string и bool типами, вы получите эту ошибку.

+0

Спасибо! Думаю, я забыл об этой части. Тем не менее, вы ищете ответ на второй вопрос! – NuckG

2

обновите код = до == вот так, потому что = оператор назначается.

void Update() { 

if (final_score == ("10")) 
{ 
    Application.LoadLevel("Result1"); 
} 

if (final_score == ("20")) 
{ 
    Application.LoadLevel("Result2"); 
} 

if (final_score == ("30")) 
{ 
    Application.LoadLevel("Result3"); 
} 

if (final_score == ("40")) 
{ 
    Application.LoadLevel("Result4"); 
} 

if (final_score ==("50")) 
{ 
    Application.LoadLevel("Result5"); 
} 

if (final_score == ("60")) 
{ 
    Application.LoadLevel("Result6"); 
} 

    } 
Смежные вопросы