unity3d - 重新加载场景后保留对象
问题描述
在我的问答游戏场景中,我有一个动画对象,当按下移动到下一个问题的按钮(按钮重新加载场景)时,该对象会更改为另一个动画。我想在场景重新加载后保留动画,最后一个引用对象的动画,但我不知道如何。对象总是返回到它的正常状态(第一个动画)。
我目前有一个名为“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");
}
}
但它不起作用。我在黑暗中拍摄,因为我不知道如何解决这个问题。如果您能给我任何可以帮助我解决此问题的想法,我将不胜感激。谢谢!
解决方案
您将不得不使用 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
}
}
推荐阅读
- swift - Tableview单元格将字符串随机放置在空的textview中
- javascript - 登录后无法获取 GPS
- database - 如何修复多个条件的 CQL 语法?
- angular - 有没有办法仅使用 Angular 根据表单输入生成用于下载的文本文件?
- javascript - 异步/等待递归 API 调用
- css - Django premailer - 从电子邮件模板中删除响应性
- javascript - 获取id值
- azure - 我们能否查明对给定页面的请求数量是否增加?
- php - PHP 使用 $_post 使用 PHP 传递单个表行数据和日期输入字段
- python - python 烧瓶应用程序使用 ACR 在 Azure Linux 容器上使用 Datadog 跟踪 APM 日志