【问题标题】:How to setup namespaces based on folder structure for Unity如何根据 Unity 的文件夹结构设置命名空间
【发布时间】:2020-12-27 06:30:48
【问题描述】:

我下载了 Unity 20.2 并希望为我的代码使用命名空间。我将我的项目设置修改为此

在编辑器中,我的代码现在有了这个文件夹结构

问题是创建的脚本Test 具有命名空间Sources,尽管我希望它是Sources.Scripts。我也尝试了Assets.Sources,但它仍然无法从中创建Assets.Sources.Scripts。

我怎样才能做到这一点?

【问题讨论】:

  • 为什么要投反对票?请至少发表评论

标签: c# unity3d


【解决方案1】:

如果您在 Visual Studio 中创建一个类,它会自动从文件夹结构中获取命名空间。喜欢assets.scripts.something。只需在正确的位置创建类,您将获得所有需要的命名空间。

【讨论】:

  • 嘿,我用 Rider 试过了。目前我在设置中有值Sources。不幸的是,它仍然使用命名空间Assets.Sources 来存储新文件。 Rider 告诉我修复那个命名空间,但 Rider 想要它是 Assets.Sources.Sources.Scripts,这也很奇怪。
  • 我现在用值Assets 对其进行了测试,Rider 将命名空间从Assets 修复为Assets.Sources.Scripts,这是正确的。
  • 但是那个 Unity 功能很奇怪......它没有按预期工作......
【解决方案2】:

我将描述一个项目中一些包的情况来解释这一点:

想象一个 Unity3D 中的项目,其目录结构如下:

  • 资产
    • 资源
    • 场景
    • 源/脚本
      • 用户界面
        • 按钮
        • 模态

本例中的命名空间约定由项目中使用的编程语言 (C#) 驱动(首字母为大写,与文件夹名称匹配)。

我建议您在选择包的命名空间时忽略“Source”或“Scripts”文件夹之前的目录路径。然后在这个项目中,我们会有这 2 个包:

  • ProjectName.UI.Buttons
  • ProjectName.UI.Modals

结论:编写你自己的命名空间,因为 Unity 命名空间的生成是基于根目录的文件夹结构,我认为如果你想通过模块共享你的代码,例如,这不是最好的。

祝你好运,兄弟?

【讨论】:

  • 谢谢你,但不幸的是我无法完全理解。您的示例的正确设置值应该是 Scripts?
  • 我个人更喜欢 /Source 文件夹而不是 Scripts。无论如何,您可以排除命名空间的文件夹路径
  • 好的,所以在Assets 文件夹中,您有一个名为Source 的文件夹,其中包含所有代码。您设置的值是Source 还是./Source?
  • 或Assets/Source或./Assets/Source
  • 是的!我有一个 Source 文件夹,对于这个例子,我的命名空间是:ProjectName.UI.Buttons 和 ProjectName.UI.Modals,我将编辑答案以包含项目名称,因为我忘记了
【解决方案3】:

如果您使用的是 Rider,请尝试 this. Resharper 具有相同的选项。我不使用它们,所以每次创建新课程时都必须使用 Select(Assets) + Del。

【讨论】:

    猜你喜欢
    • 2012-11-10
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    相关资源
    最近更新 更多