Unity不能隐式地转换类型“字符串”;bool"“帮助”

本文关键字:字符串 bool quot 帮助 不能 转换 类型 Unity | 更新日期: 2023-09-27 18:02:44

所以,我试图创建一个测验,可能是最困难的方式可能知道我,这个错误不断弹出(线程的标题)。这是密码,有人知道怎么回事吗?

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

这是我的主要问题,但如果可能的话,有人知道unity测试应用程序的好教程吗?我现在用的是最基本的东西,但我觉得有一种更简单的方法,我不知道那是什么。我找到了一些教程,但没有一个是我需要的。我的测验有8个问题,每个问题有4个答案。我需要把每个答案加起来来确定最终结果,总共有6个。我对每个问题/结果使用一个场景,我应该改变吗?但如果我这样做了,我怎么才能得到正确的问题/答案?我对整个测试的主要问题是结果。我如何通过不同的场景将问题加起来以确定结果?谢谢!这个项目有一个时间表,需要明天完成,所以快速的结果将是伟大的!请确保修复/教程在iOS和其他移动设备上工作。

Unity不能隐式地转换类型“字符串”;bool"“帮助”

=是赋值运算符,==是相等运算符

final_score = ("10")

行和其他行作为

执行
  • "10"分配给final_score变量
  • 返回这个字符串对象。

由于if语句期望布尔表达式,并且stringbool类型之间没有隐式对话,因此您会得到此错误

=改成==,因为=是赋值运算符。

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

除了你的比较运算符错误之外,score似乎应该是一个整数。

还可以使用字典或类似的数据结构来避免使用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]);
}