我想在玩家在触发开关上四处走动时打开一扇门,所以我创建了 2 个脚本,并将我的 Bool 变量设置在另一个类上,但它在我的 First 类代码中不起作用:
internal bool openDoor=false;
private void OnTriggerEnter2D(Collider2D door)
{
if (openDoor==true && door.gameObject.tag == "Player")
{
StartCoroutine(fading());
}
}
这是我的第二堂课,将 openDoor 设置为“true”:
private void OnTriggerEnter2D(Collider2D doorTrigger)
{
if (doorTrigger.gameObject.tag == "Player")
{
LoadLevel03 l3 = new LoadLevel03();
l3.openDoor = true;
}
}
当我回来找门时,门打不开,尽管我将 Bool 设置为 true。
最佳答案
您正在创建 LoadLevel03
的新实例,将其 openDoor
字段设置为 true,然后再次将其丢弃。
您需要获取关卡中已经存在的 LoadLevel03
对象。
编辑:像这样:
private void OnTriggerEnter2D(Collider2D doorTrigger)
{
if (doorTrigger.gameObject.tag == "Player")
{
//find the existing level 3 object and allow it to open
LoadLevel03 l3 = GameObject.Find("Level3Door");
l3.openDoor = true;
}
}
显然这取决于您将 3 级对象设置为名称为“Level3Door”
附言。 openDoor
已经是一个 bool 值,所以不需要在第一个方法中进行比较:ie
if (openDoor && door.gameObject.tag == "Player")
关于c# - 为什么它不将 Bool 变量传递给另一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55846603/