【问题标题】:Unity - How to access a class from another project?Unity - 如何从另一个项目访问一个类?
【发布时间】:2023-03-06 21:04:01
【问题描述】:

在我的 Unity 解决方案中,我有两个项目,主项目和编辑器项目。 我正在创建一个编辑器脚本,我想引用我在主项目中的一个类。

我已尝试在要从编辑器引用的类中添加命名空间,但 Visual Studio 未在编辑器脚本中检测到它。

我尝试关注这个帖子: How can I refer to a project from another one in c#?

但是,当我尝试这样做时,我收到以下错误消息:“无法添加对 'Assembly-CSharp' 的引用。将此项目作为引用添加会导致循环依赖。

非常感谢!

【问题讨论】:

  • 在 Unity 中,您不能。该脚本必须存在于项目中才能被其他脚本使用或包含在构建中
  • A reference to 'Assembly-CSharp' could not be added. Adding this project as a reference would cause a circular dependency. - 这意味着您尝试添加的项目包含当前项目,或者您尝试将项目添加到自身。这意味着如果允许,它将无限处理项目,因为项目A包含项目B,但项目B包含项目A,所以添加项目A但添加项目B,其中包括项目A...
  • @cybermonkey 或者更可能的是,两个项目都使用相同的 DLL 名称,因为 Unity 不会费心使其兼容。
  • @Programmer,感谢您让我知道 - 我不知道这是不可能的。然而,我已经看到许多资产(来自商店)做了我所追求的,基本上是向场景中的一些对象添加一个“工具”组件,然后获取一个编辑器脚本来查找它们并获取它们包含的数据。我应该用目前的代码打开一个新问题吗?

标签: c# unity3d visual-studio-2015 unity-editor


【解决方案1】:

在 Unity 中,您不能直接引用不同的项目。 但是,您可以将类、对象等导出到 Unity 中的包中。

从“编辑器”项目导出包后,您可以将其导入“主”项目。

您可以使用 Assets > Export Package 导出包并选择要导出的内容:

【讨论】:

  • 不确定这与从另一个项目访问/引用类有什么关系。只复制类文件不是比导出和导入包更容易吗? OP 不想复制该课程。这就是问题背后的原因。
  • 非常感谢您的回答,但我认为我措辞错误。我不想在项目 B 中引用项目 A 中的游戏对象。我有一个项目,只有一个解决方案,在这个解决方案中有两个项目(Visual Studio 项目):主项目和编辑器项目。我想在编辑器项目的一个类中访问主项目的一个类。抱歉给您带来的困惑并感谢您的宝贵时间。
【解决方案2】:

一段时间后我又回到了这个问题上,发现了我正在寻找的东西,以防万一它对任何人都有用。我想要的是一个自定义检查器。基本上有一个常规的 Monobehavior 组件并使用 UnityEditor 脚本覆盖它的检查器(Asset Store 中的许多工具都使用它)。

这里有很大的解释: https://unity3d.com/es/learn/tutorials/topics/interface-essentials/building-custom-inspector

【讨论】:

    猜你喜欢
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多