(我是Unity的新手)我正在开发一款以爱的世界为灵感的游戏.除了主菜单之外,我还有多个游戏场景.我还有多个游戏对象,在玩家与它们互动后,它们会被销毁.有些在触发器退出时或在IE数字符后被销毁.当玩家使用静态布尔框切换场景时,我会将它们销毁.我的问题是,在物品被销毁后,如果我想开始一场新的游戏,它们会一直被销毁.我不知道怎么重置它们.这里有一个例子.我制作了一只乌鸦来播放动画,动画播放完后,它就被销毁了. 以下是代码
{
public Animator anim;
public AudioSource audioSource;
public AudioSource Flyingsound;
public GameObject Crow;
public GameObject trigger;
static bool m_IsDeleted = false;
static bool n_IsDeleted = false;
public void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
anim.SetTrigger("Flying");
audioSource.Play();
GetComponent<BoxCollider2D>().enabled = false;
Flyingsound.Play();
StartCoroutine(crow(4));
m_IsDeleted = true;
n_IsDeleted = true;
}
}
IEnumerator crow(float waitTime)
{
yield return new WaitForSeconds(waitTime);
Destroy(Crow);
Destroy(this);
}
public void Awake()
{
if (m_IsDeleted)
Destroy(Crow);
if(n_IsDeleted)
Destroy(this);
}
}
我试图访问主菜单脚本中的bool,并在"开始新游戏"按钮单击时将其重置为false,但由于是静态的并且具有"由于保护级别而无法访问"错误,我无法访问它,如果我将bool设置为公共,则游戏对象不再保持在场景之间销毁. 我不知道重新设置这些游戏对象时,开始一个新的游戏或什么是变通办法这.. 主菜单脚本是:
public GameObject gameObject;
public void PlayGame()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
gameObject.SetActive(false);
PlayerPrefs.DeleteKey("p_x");
PlayerPrefs.DeleteKey("p_y");
PlayerPrefs.DeleteKey("TimeToLoad");
PlayerPrefs.DeleteKey("Saved");
}
public void QuitGame()
{
Application.Quit();
}
public void ContinueGame()
{
if(PlayerPrefs.GetInt("LoadSaved") == 1)
{
SceneManager.LoadScene(PlayerPrefs.GetInt("SavedScene"));
gameObject.SetActive(false);
}
else
{
return;
}
}