c# - 为什么它不将 Bool 变量传递给另一个类?

标签 c# windows unity3d

我想在玩家在触发开关上四处走动时打开一扇门,所以我创建了 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/

相关文章:

c# - 可以按类对 Visual Studio Community Intellisense 建议进行排序吗?

c# - 使用变量名调用接口(interface)

c# - 扩展方法的有效权重(在设计时、运行时等)

c - 是否可以将winsock2动态链接到我的c/c++程序中

asp.net - 企业服务器上的 IIS 6.0 - 内存限制

c# - Vector3.Set 和 Rigidbody2D.velocity.Set 和功能无法正常工作

ios - iOS 9 上的 Facebook 7.0.3 登录问题

c# - ApplicationBar 绑定(bind) Windows Phone

c# - 初始化后向 Container 添加注册表

c++ - 从 Qt 4.x (Ubuntu Linux) 迁移到 Qt 5.1 (Windows 7)