首页 > 解决方案 > DontDestroyOnLoad 中的游戏对象变换

问题描述

我使用以下脚本来复制游戏对象的转换。

public Transform alignment;

void Update()
{
    DontDestroyOnLoad(transform.gameObject);

    transform.position = new Vector3(alignment.position.x, alignment.position.y, alignment.position.z);
    float y = alignment.transform.localRotation.eulerAngles.y;
    float x = alignment.transform.localRotation.eulerAngles.x;
    float z = alignment.transform.localRotation.eulerAngles.z;
    transform.localEulerAngles = new Vector3(x, y, z);
}

我想在其他场景中访问此转换(将其应用于游戏对象)。我怎样才能达到 DontDestroyOnLoad 中的转换?

标签: c#unity3d

解决方案


您需要将对齐作为参数提供给 DontDestroyOnLoad 方法,而不是 transform.gameObject。

DontDestroyOnLoad(alignment.gameObject);

此外,您不需要在 Update() 中调用此方法。只需调用一次就足够了。您可以在 Start() 中调用它,如下所示:

void Start()
{
    DontDestroyOnLoad(alignment.gameObject);
}

现在,当您更改场景时,您的对齐游戏对象仍然可以访问。如果你想从新场景中的其他游戏对象访问它,你可能想给它一个标签或让它成为一个单例。


推荐阅读