我在互联网上看到过类似的问题,但似乎都不适用于我的情况。
我有一个非常简单的项目,有两个场景:MainMenuScene
和 OtherScene
。 OtherScene
只是一 block 空白 Canvas ,而 MainMenuScene
只有一个用于导航到 OtherScene
的按钮。主摄像头附加了以下脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class LaunchScene : MonoBehaviour {
public void LaunchSceneOnButtonClick(int index)
{
SceneManager.LoadScene(index);
}
public void LaunchSceneOnButtonClick(string sceneName)
{
SceneManager.LoadScene(sceneName);
}
}
并且在按钮的OnClick()
中,调用该脚本。我已确保将这两个级别添加到build设置中。
如果我调用采用整数参数的 LanchSceneOnButtonClick
版本(并在 OnClick()
方法中指定适当的值),则将加载所需的场景。
但是,如果我调用采用字符串参数的版本并使用我想要加载的场景的确切名称(并且我已经四次检查它确实是确切的字符串,那么字符串名称没有空格或隐藏字符,并且已将场景名称复制粘贴到 OnClick()
参数字段中)场景未加载,而是收到错误消息
Scene "OtherScene" couldn't be loaded because it has not been added to the build settings or the AssetBundle has not been loaded.
由于使用场景索引有效,我们知道它已正确添加到build设置中,因此我推断场景名称存在一些问题。但我已经完全复制了。我想避免使用场景的完整路径,以防我稍后决定将场景移动到不同的文件夹,那么我在这里有什么选择?
提前致谢。
编辑:
添加屏幕截图。
文件夹结构中的场景:
build设置中的场景:
OnClick()
输入:
请记住,我还尝试了带引号和不带引号的 OnClick()
输入。
最佳答案
唯一可能出现的问题是:
- 传递的字符串与场景名称不同;请记住,
LoadScene
中使用的字符串不区分大小写,即您可以使用OtherScene
、OTHERscene
、等等 - build设置中的场景未激活(即左侧的复选标记已禁用)。
- 该场景根本不存在于build设置中。
顺便说一句,场景的完整路径是无关紧要的,您可以在资源中的任何目录/子目录中包含 OtherScene
,并且您只需要场景的名称。仅当您在不同路径中有多个同名场景时,您才需要场景的完整路径(无论如何您不应该这样做,这是一种明显糟糕的做法)。
编辑:您说即使没有 "
(正如您应该做的那样,在检查器中输入 string
字段时您不需要它们),会发生什么如果将方法主体修改为:
public void LaunchSceneOnButtonClick(string sceneName)
{
SceneManager.LoadScene("OtherScene");
}
尝试一下并报告发生的情况。
关于unity-game-engine - SceneManager.LoadScene(string) 无法识别场景名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44838271/