我的 Unity 项目中有 3 个场景,并试图通过其名称获取场景索引。我正在尝试使用SceneManager,但我不知道如何使用SceneManager.GetSceneByName。使用
SceneManager.GetSceneByName("Scene1");
Run Code Online (Sandbox Code Playgroud)
返回null,同时我可以使用加载场景
SceneManager.LoadScene("Scene1",LoadSceneMode.Single);
Run Code Online (Sandbox Code Playgroud)
当我有 3 个场景时, SceneManager.sceneCount也会返回1。
Unity 文档GetSceneByName说:
在添加到 SceneManager 的场景中搜索具有给定名称的场景。
该名称必须不带 .unity 扩展名。该名称可以是 BuildSettings 窗口中显示的名称的最后一部分,在这种情况下,将返回第一个匹配的场景。该名称也可以是构建设置中显示的路径,但仍然没有扩展名,在这种情况下,只会返回完全匹配的内容。这是不区分大小写的。
这是否意味着我应该将所有场景添加到SceneManager第一个场景?
我怎样才能做到这一点?
如果是这样,那么为什么SceneManager.LoadScene()要使用场景名称而不将其添加到 中SceneManager?
注意:我已经将所有 3 个场景添加到“构建”设置中。
加载新场景时,我遇到了鼠标拖动无法转移到下一个场景并且在加载新场景时必须重新单击的麻烦。
我希望鼠标点击可以无缝地转移到下一个场景而不会引起玩家的注意,更一般地说,我想知道如何最好地保留某些游戏对象并使它们转移到下一个场景。
从本质上讲,我想要做的是让整个游戏表现得像一个大场景,玩家可以玩这个大场景,但仍然可以分解成更小的场景,这些场景可以在后期访问或转换成关卡。
提前致谢。
这是我目前使用的代码
using UnityEngine;
using System.Collections;
using UnityEngine.Profiling;
public class MoveBall : MonoBehaviour
{
public static Vector2 mousePos = new Vector2();
private void OnMouseDrag()
{
mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
transform.position = mousePos;
DontDestroyOnLoad(this.gameObject);
}
}
Run Code Online (Sandbox Code Playgroud)
Bellow 是负责加载场景的脚本:
public class StarCollision : MonoBehaviour
{
private bool alreadyScored = false;
private void OnEnable()
{
alreadyScored = false;
}
private void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.CompareTag("White Ball"))
{
if (!alreadyScored)
{
ScoreScript.scoreValue += 1;
StartCoroutine(ChangeColor());
alreadyScored = true;
}
}
if …Run Code Online (Sandbox Code Playgroud) 以来
Application.LoadLevel(level);
Run Code Online (Sandbox Code Playgroud)
不推荐使用新的SceneManager,我想问一下如何使用它来加载/获取简单的参数,如字符串类型,以及生命周期的哪些函数最佳实践?(例如Start,Awake)
SceneManager.LoadScene("resultScene", chosenOptions);
Run Code Online (Sandbox Code Playgroud)
注意:为了简化:有没有除了编写新类的选项,如?
在我的应用程序中,我想在特定场景启动时获取某些场景及其构建索引的列表。可能尚未加载任何场景。
为此我尝试过SceneManager.GetSceneByName()- 我有相关场景的名称。什么也没有回来。
查看文档似乎这应该可行。然而,看看类似的内容GetSceneByIndex()确实表明它仅适用于加载的场景,并且我假设 - 认为它没有这么说 - 这同样适用于GetSceneByName().
因此,我还没有找到一种方法来列出所有可用但可能尚未加载的场景。到目前为止,我已经对相关的构建索引进行了硬编码,但我不喜欢这样。
有办法做到这一点吗?