代码之家  ›  专栏  ›  技术社区  ›  Muhammad Faizan Khan

如何知道项目中不存在特定的脚本,这样它就不会在Unity中产生任何错误

  •  -2
  • Muhammad Faizan Khan  · 技术社区  · 6 年前

    我有一行脚本,它从第三方脚本(NGUI包)获得类引用:

    UIEventListener.Get(this.gameObject).onClick += expiryDateSettingsUIController.ActiveDeactiveUICaller;
    

    UIEventListener类属于NGUI包。我的问题是,如果这个类不存在,我不想显示任何错误。我怎么能做到呢?。如果该类不可用,那么它将抛出编译器错误,并且不允许我生成exe。

    2 回复  |  直到 6 年前
        1
  •  -1
  •   Ignacio Alorre    6 年前

    你可以用 GetType() 要反映您要找的课程:

    Type mType = Type.GetType("UIEventListener");
    
    if(mType  != null)
    {
         UIEventListener.Get(this.gameObject).onClick += expiryDateSettingsUIController.ActiveDeactiveUICaller;
    }
    
        2
  •  -1
  •   Arshia001    6 年前

    但是,您可以使用条件编译。条件编译,顾名思义,就是在编译过程中去掉代码片段,因此这些片段永远不会被编译,也不会遇到编译错误。将代码包装在 #if #endif 如下所示:

    #if WITH_NGUI
    UIEventListener.Get(this.gameObject).onClick += expiryDateSettingsUIController.ActiveDeactiveUICaller;
    #endif
    

    WITH_NGUI 条件编译符号。在Unity中,你可以进入播放器设置,然后会有一个名为Scripting Define Symbols的框,你可以在其中输入任意数量的符号。类型 然后代码就可以编译了。如果没有可用的NGUI,只需删除符号,代码就不会再编译了。

    不过,这可不是件好事。你被警告过了。

    能够 还可以使用反射来访问构建中可能不存在的类,但这样做会带来更多麻烦。