你好!

我正在Unity 6中开发一款多人游戏,采用分层架构,但我还没有完全理解各层的边界。其中一个架构目标是保持领域层独立于引擎。

然而,我遇到了一个关于Unity值类型的问题,特别是Color、Vector3、Quaternion等。

一种观点认为,这些只是值结构体,因此在领域层中使用它们是无害的
public Color PlayerColor { get; }

但是,那些操作这些值的Unity API呢?
public static string ToHex(Color color) => "#" + ColorUtility.ToHtmlStringRGB(color);

所以我想知道:

  • 引用Unity值类型与调用Unity工具API之间是否存在有意义的架构差异?
  • 你会允许在领域层中使用ColorUtility吗?
  • 如果不会,你会创建一个领域原生的Color/RgbaColor类型,并将所有Unity转换逻辑保持在领域层之外吗?(这可能会导致在领域层中重新创建大量新类型)
  • 或者,对于Unity项目来说,严格的“领域层零引用UnityEngine”规则是否过于苛刻?

正如我前面所说,我正在理解分层架构背后的概念,并想知道你们是如何处理这个问题的。

谢谢大家!