4

我试图让我的游戏逻辑 API 不可知。这样做时,我不想使用 Unity3D 的 Vector3 结构或 XNA 等。最好的方法是什么?如果我滚动自己的 Vector3 结构并只是将隐式转换器写入各种 API 实现,这似乎会非常繁重。

这种事情有最佳实践吗?不是我可以要求微软、Unity等去野餐,坚持一个通用的界面。

4

2 回答 2

3

看起来XNAUnity的实现Vector3非常相似,主要区别在于属性名称的情况。太糟糕了,没有办法实现扩展属性。

您可以做的是创建一组扩展方法,以及一些条件编译(#if UNITY_3_3#if XNA),并专门使用这些扩展方法来检索与 API 无关的代码中的值。这仍然允许您将未修改的 Vector3 对象传递给需要 Vector3 的平台特定代码,而无需大量转换。

于 2011-03-14T19:01:43.050 回答
2

根据我的经验,我会选择一个平台来编写你的逻辑,然后在另一个平台上创建一个匹配的实现,并转换为平台的本机类型。设计和编写第三个实现然后必须对两个平台进行转换是没有意义的!

在所有平台相同的情况下,我可能更喜欢 XNA,因为您可以从 MonoGame 或(最终)ExEn 获取开源实现并使用它。

但是,在实践中,我认为您可能最好从您打算开发的平台(XNA 或 Unity)开始,然后在您真正需要它时创建您的兼容层。

于 2011-03-14T12:56:58.997 回答