【问题标题】:Why Unity includes the Editor directories in build为什么 Unity 在构建中包含编辑器目录
【发布时间】:2021-09-09 18:58:52
【问题描述】:

当我尝试构建我的游戏时,Unity 会包含包含在我的 Editor 目录中的脚本。这意味着构建失败,因为在构建期间无法访问 Unity.Editor。我正在使用 Unity 2020.1.6f1,我该如何解决这个问题?

这是我在构建过程中遇到的错误类型:

Assets\Scripts\Editor\EnemyLootEditor.cs(7,32):错误 CS0246:类型 或命名空间名称“编辑器”找不到(您是否缺少使用 指令还是程序集引用?)

编辑器模式下启动游戏时不会出现这些错误。

这是我的 Scripts 文件夹的图片,其中包含我的所有代码文件,包括我的 Editor 文件:

【问题讨论】:

    标签: unity3d build


    【解决方案1】:

    正如@Thomas 所说,是的,您必须检查您的编辑器文件是否存储在编辑器目录中,并在使用它们时使用编译器指令。

    但是这个问题似乎与程序集定义文件更相关,请检查这个相关的link

    您是否在使用程序集定义文件?他们不尊重编辑 文件夹。您需要添加 Editor asmdefs。

    总结一下,如果您的项目中有一个 .asmdef 文件,并且您正在使用编辑器脚本,那么您需要为您的编辑器脚本提供一个 .asmdef 文件 .

    【讨论】:

    • 谢谢,现在可以正常使用了!因此,简而言之,我必须在我的 Editor 文件夹中创建一个新的 程序集定义 文件:EditorAssembly 文件。然后我将我的 GameAssembly 文件添加到 EditorAssembly 的引用中,最后,我将 UNITY_EDITOR 约束添加到它。
    【解决方案2】:

    存储在名为“Editor”的文件夹中的文件不包含在构建中。 (see special folder names in unity)

    如果您在“常规”脚本文件中调用编辑器代码,则必须使用 UNITY_EDITOR 编译器指令将此代码括起来:

    #if UNITY_EDITOR
    // will not be present in build
    [...]
    #endif
    

    【讨论】:

    • 或者把你的文件放到Editor文件夹中
    • @Lotan 这就是问题所在,这些脚本位于 Editor 目录中。我知道它们不应该成为构建的一部分,但它会以某种方式发生。
    • @DeWolfMaxime 你有汇编文件吗?
    • @Lotan 是的,我的 Scripts 文件夹底部有一个程序集文件,我的 Editor 文件夹就在其中。这可以解释我的错误?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 2016-08-02
    • 2019-08-30
    • 1970-01-01
    • 2011-10-16
    相关资源
    最近更新 更多