首页 > 解决方案 > 重新加载场景后保留对象

问题描述

在我的问答游戏场景中,我有一个动画对象,当按下移动到下一个问题的按钮(按钮重新加载场景)时,该对象会更改为另一个动画。我想在场景重新加载后保留动画,最后一个引用对象的动画,但我不知道如何。对象总是返回到它的正常状态(第一个动画)。

我目前有一个名为“tower”的脚本,它引用了我制作静态对象和 DontDestroyOnLoad 函数的对象:

public static SpriteRenderer towerAnimation;


void Awake()
{
    DontDestroyOnLoad(gameObject);
    towerAnimation = GetComponent<SpriteRenderer>();
}

而“GameManager”脚本更新中的这段代码:

public static int counterQuestionChances = 2;

void DestroyTower()
    {
        if (counterQuestionChances == 1)
        {
            Tower.towerAnimation.SetTrigger("error 1");

        }
        else
        {
            if (counterQuestionChances == 0)
            {
                Tower.towerAnimation.SetTrigger("error 2");

            }
        }

但它不起作用。我在黑暗中拍摄,因为我不知道如何解决这个问题。如果您能给我任何可以帮助我解决此问题的想法,我将不胜感激。谢谢!

标签: unity3danimationreloadscene

解决方案


您将不得不使用 Unity 拥有的 SceneManagement 库,因此当场景更改时,将调用下面称为 OnActiveSceneChanged 的​​方法。

using UnityEngine.SceneManagement;

public class Tower : MonoBehaviour
{
    public static SpriteRenderer towerAnimation;
    public int storedCounter = 0;
    void Awake()
    {
        DontDestroyOnLoad(gameObject);
        towerAnimation = GetComponent<SpriteRenderer>();
        SceneManager.activeSceneChanged += OnActiveSceneChanged;
    }

    private void OnActiveSceneChanged(UnityEngine.SceneManagement.Scene scene, UnityEngine.SceneManagement.Scene currentScene)
    {
        //tower animation stuff here
    }
}

推荐阅读