如何永久销毁游戏对象?也就是说,如果我在当前场景中销毁游戏对象,我希望游戏对象只存在一次,然后当我重新加载同一场景时,我希望它被禁用/销毁。我如何实现这一目标?
编辑:或者下面的脚本只能使用 bool 变量运行一次?
void Update()
{
if(Input.GetKeyDown(KeyCode.A)
{
GameObject go = GameObject.Find("Cloner");
Destroy(go);
SceneManager.LoadScene("Home");
}
}
我通过在函数中使用 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");
}
}
我编写了这个简单的脚本,用于在玩家在场景之间切换时永久销毁游戏中的拾取物品。只需将其附加到一次性项目 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);
}
}