可能只是一些愚蠢的小错误,我现在太愚蠢了,看不见,但这真的让我很困扰.

public void ButtonNextLevel()
{
    string currentScene = Convert.ToString(SceneManager.GetActiveScene().name);
    char[] currentSceneChars = new char[currentScene.Length];
    int stringLength = currentScene.Length;
    int levelIndex;

    using (StringReader sr = new StringReader(currentScene))
    {
        sr.Read(currentSceneChars, 0, currentScene.Length - 2);
    }
    string levelIdentifier = new string(currentSceneChars);
    Debug.Log(levelIdentifier);

    if(levelIdentifier == "Level")
    {
        levelIndex = currentScene[stringLength - 1];
        Debug.Log(levelIndex);
        string nextSceneName = "Level " + (levelIndex + 1).ToString();
        if(SceneManager.GetSceneByName(nextSceneName).IsValid())
        {
            SceneManager.LoadScene(nextSceneName);
        }
        else {GameWon();}
    }
}
public void GameWon()
{
    SceneManager.LoadScene("GameWon");
}

主要问题似乎是if(levelIdentifier == "Level")声明.如果我到达执行此脚本的位置,我确实会收到Debug.Log(levelIdentifier);的响应(明确指出"Level"),但不会收到Debug.Log(levelIndex);的响应:

推荐答案

我确实从调试中得到了响应.日志(log)(levelIdentifier);(明确规定"级别")

是否确定调试输出中没有空格字符(如空格或其他)?也可以try 添加Debug.Log(levelIdentifier.Length);.

对于if语句,判断字符串是否以前缀开头似乎是一种非常复杂的方法.由于Scene.name已经是使用stringStartsWithstring次try (另一个可能有用的是string.Contains):

var sceneName = SceneManager.GetActiveScene().name;
if(sceneName.StartsWith("Level"))
{
    ...
}

Csharp相关问答推荐

在C#WinUI中,一个关于System的崩溃."由于未知原因导致执行不例外"

ITypeLib2.GetLibStatistics()在C#中总是抛出AccessViolationException

(乌龙)1&#比c#中的UL&#慢吗?

ASP.NET Core AutoMapper:如何解决错误 CS0121调用在以下方法或属性之间不明确

我想在文本框悬停时在其底部显示一条线

单元测试:模拟返回空

具有以接口为其类型的属性的接口;类指定接口的实现,但无效

为什么@rendermode Interactive Auto不能在.NET 8.0 Blazor中运行?

如何在.NET AOT中为所有枚举启用JsonStringEnumConverter

CRL已过期,但ChainStatus告诉我RevocationStatus未知

从Base64转换为不同的字符串返回相同的结果

如何消除Visual Studio错误,因为它不识别集合表达式的新C#12语法?

当`JToken?`为空时?

使用Try-Catch-Finally为API端点处理代码--有什么缺点?

无法将.Net Framework 4.8.1升级到.Net 7

Unity 3D-意外轴捕捉和未知力对脉冲react 行为的影响

在SQL中删除少于24小时的令牌

自定义C#链接调用未按预期运行

返回可为空的泛型类型的函数未返回正确的类型

C#如何声明传递的参数被添加到Action<>;?