如何解决如何根据另一个场景的条件销毁游戏对象?
要快速简洁。首先,从去年年中开始,我就是 C# 的初学者。所以我可能看不懂复杂的伪代码解释,先见谅。
问题: 我的场景中有一个对象,它有一个 TriggerBattle.cs 和一个启用了触发器的简单盒子碰撞器。当我的播放器进入触发器时,TriggerBattle.cs 将屏幕淡出为黑色,然后加载到我的战斗场景中。战斗结束后,我希望能够设置一个条件,“我赢得了战斗,当你加载回到世界时,你激活进入战斗的那个对象已经不在了! " 但是.. 我不知道该怎么做。
尝试过: 使用 DontDestroyOnLoad 将其保留在战斗场景中并禁用对象以“隐藏”它,然后如果我赢得了战斗,我用简单的静态布尔值设置的条件切换为 true 只会破坏游戏对象。
除此之外,它会找到第一个同类型“TriggerBattle”的游戏对象并销毁它,无论它是不是我激活的战斗。 (我的主要问题)
预期结果: 一旦我赢得了那场战斗,我希望我的“世界场景”中的游戏对象永久停用。我不希望它在我切换场景时返回,只有当我创建一个新的游戏过程。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class TriggerBattle : MonoBehavIoUr
{
[Serializefield] GameObject fadeScreenObject;
[Serializefield] GameObject cameraObject;
[Serializefield] string sceneManager;
FadeImage fadeImage;
void Awake()
{
fadeImage = FindobjectOfType<FadeImage>();
cameraObject = FindobjectOfType<Camera>().gameObject;
fadeScreenObject = FindobjectOfType<FadeImage>().gameObject;
}
IEnumerator OnTriggerEnter2D(Collider2D other)
{
if (other.GetComponent<Unit>().isPlayer)
{
fadeScreenObject.gameObject.SetActive(true);
yield return StartCoroutine(fadeImage.FadeSlowly(true));
yield return new WaitForSeconds(0.5f);
cameraObject.gameObject.SetActive(false);
Destroy(cameraObject);
DontDestroyOnLoad(gameObject);
gameObject.SetActive(false);
SceneManager.LoadScene(sceneManager);
}
}
}
所以你可以看到我试图用 DontDestroyOnLoad 保留那个特定的对象,但它所做的只是结转,然后当我从战斗中返回我的场景时,它会被复制。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。