API不可知Vector3,Matrix等?

时间:2011-03-14 05:57:49

标签: c# xna unity3d slimdx opentk

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

这种事情有最好的做法吗?这并不是说我可以要求微软,Unity等人去野餐并坚持使用通用界面。

2 个答案:

答案 0 :(得分:3)

Vector3的{​​{3}}和XNA实现看起来非常相似,主要区别在于属性名称。太糟糕了,无法实现扩展属性。

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

答案 1 :(得分:2)

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

所有平台都相同,我可能会喜欢XNA,因为你可以从MonoGame或(最终)ExEn获取开源实现并使用它。

然而,在实践中,我认为您最好开始使用您打算在(XNA或Unity)上开发的平台,然后在实际需要时创建兼容层。