我有以下问题。我正在使用 SceneManager 将我的主角从一个场景传送到另一个场景。每当我传送他时,它都会传送到对象触发位置。
private void OnTriggerEnter(Collider collider)
{
if (!load)
{
load = true;
StartCoroutine(ChangeScene(collider));
}
}
IEnumerator ChangeScene(Collider collider)
{
SceneManager.LoadScene(nextSceneIndex, LoadSceneMode.Additive);
Scene nextScene = SceneManager.GetSceneAt(1);
GameObject gameobj = collider.gameObject.transform.parent.gameObject;
SceneManager.MoveGameObjectToScene(gameobj, nextScene);
gameobj.transform.position = new Vector3(0, 0, 0);
foreach (Transform child in gameobj.transform)
{
child.position = new Vector3(0, 0, 0);
}
yield return null;
SceneManager.UnloadScene(nextSceneIndex - 1);
}
游戏对象变换位置并不重要,因为它的子对象总是会重新定位自己以匹配传送前触发器的位置。我不明白为什么孩子们总是在父母所在的任何地方修改他们的位置。他们不应该在父母内部保持相同的位置吗?我还是 Unity 的新手,我不知道很多东西,我仍然需要一些帮助。