(Unity) 销毁当前场景中的游戏对象,并在加载当前场景后使其永久销毁?

问题描述 投票:0回答:2

如何永久销毁游戏对象?也就是说,如果我在当前场景中销毁游戏对象,我希望游戏对象只存在一次,然后当我重新加载同一场景时,我希望它被禁用/销毁。我如何实现这一目标?

编辑:或者下面的脚本只能使用 bool 变量运行一次?

void Update()
{
  if(Input.GetKeyDown(KeyCode.A)
  {
    GameObject go = GameObject.Find("Cloner");
    Destroy(go);
    SceneManager.LoadScene("Home");
  }
}
c# unity-game-engine
2个回答
2
投票

我通过在函数中使用 DontDestroyOnLoad() 来做到这一点

无效唤醒()

static bool created = false;
public bool Loading = true;

void Awake()
{
  if(!created)
  {
    DontDestroyOnLoad(this.gameObject);
    created = true;
  }
  else
  {
  Destroy(this.gameObject);
  }
}

void Update()
{
  if(Input.GetKeyDown(KeyCode.A) && LoadingOnce == true)
  {
    GameObject go = GameObject.Find("Cloner");
    Destroy(go);
    LoadingOnce = false;
    SceneManager.LoadScene("Home");
  }
}




0
投票

我编写了这个简单的脚本,用于在玩家在场景之间切换时永久销毁游戏中的拾取物品。只需将其附加到一次性项目 GameObject 并为其指定一个唯一的名称即可。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DontRespawn : MonoBehaviour
{
    public static List<string> pickedUpObjs = new List<string>();

    void Start()
    {
        if (pickedUpObjs.Contains(gameObject.name))
        {
            Destroy(gameObject);
        }
    }

    void OnDestroy()
    {
        pickedUpObjs.Add(gameObject.name);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.