如果玩家按下I键,我想显示一个清单场景。
在此清单场景中,应该显示英雄对象,并对其进行操作(例如,在该场景中应更改当前武器),因此MoveGameObjectToScene似乎很适合。
因此,我遵循了this advice,基本上遵循了以下内容。
它工作正常,但是问题在于仍然显示了前一个场景。我以为“加法”是指先前的场景没有被破坏,而是被隐藏了。 但是显然,它甚至没有被隐藏。它确实与以前的场景重叠。
将其物理移除并没有太大帮助,因为场景1中的灯光已添加到场景2中。
我已经关闭了两个场景的“自动生成照明”。
可能是什么原因造成的?
非常感谢您的任何建议!
public class PlayerScript : MonoBehaviour
{
public GameObject UIRootObject;
private AsyncOperation sceneAsync;
void Update()
{
if (Input.GetKeyDown(KeyCode.I))
{
StartCoroutine(loadScene(1));
}
}
IEnumerator loadScene(int index)
{
AsyncOperation scene = SceneManager.LoadSceneAsync(index, LoadSceneMode.Additive);
scene.allowSceneActivation = false;
sceneAsync = scene;
//Wait until we are done loading the scene
while (scene.progress < 0.9f)
{
Debug.Log("Loading scene " + " [][] Progress: " + scene.progress);
yield return null;
}
OnFinishedLoadingAllScene();
}
void enableScene(int index)
{
//Activate the Scene
sceneAsync.allowSceneActivation = true;
Scene sceneToLoad = SceneManager.GetSceneByBuildIndex(index);
if (sceneToLoad.IsValid())
{
Debug.Log("Scene is Valid");
SceneManager.MoveGameObjectToScene(UIRootObject, sceneToLoad);
SceneManager.SetActiveScene(sceneToLoad);
}
}
void OnFinishedLoadingAllScene()
{
Debug.Log("Done Loading Scene");
enableScene(1);
Debug.Log("Scene Activated!");
}
}
答案 0 :(得分:1)
“加性”加载场景不是我要用的(您已经看到了问题,加性意味着加载前一个场景时不会破坏先前的对象,但是不会以任何方式修改它们,而不是甚至是隐藏的。)
相反,您可以有多个摄像机,每个摄像机都有自己的“消光蒙版”。然后,我将有一个“库存相机”,仅显示库存中的对象,仅此而已。 “主摄像机”将具有一个剔除蒙版,可以显示除库存对象之外的所有内容。
要定义剔除蒙版,您需要定义图层。这里是一些文档:https://docs.unity3d.com/Manual/class-Camera.html
然后您可以在用户每次按“ I”时禁用“主摄像机”并启用“库存摄像机”。这是通过Camera.main完成的。
希望这会有所帮助。