微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何根据另一个场景的条件销毁游戏对象?

如何解决如何根据另一个场景的条件销毁游戏对象?

快速简洁。首先,从去年年中开始,我就是 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 举报,一经查实,本站将立刻删除。