我试图让我的游戏逻辑与 API 无关。这样做时,我不想使用 Unity3D 的 Vector3 结构或 XNA 等。最好的方法是什么?如果我推出自己的 Vector3 结构并只为各种 API 实现编写隐式转换器,这似乎会非常繁重。
这种事情有最佳实践吗?这不像我可以要求 Microsoft、Unity 等去野餐并坚持一个通用的接口(interface)。
最佳答案
看起来像XNA和 Unity Vector3
的实现非常相似,主要区别在于属性名称的大小写。太糟糕了,没有办法实现扩展属性。
您可以做的是创建一组 extension methods ,以及一些条件编译(#if UNITY_3_3
或 #if XNA
),并专门使用这些扩展方法来检索 API 不可知代码中的值。这仍然允许您将未经修改的 Vector3 对象传递给需要 Vector3 的平台特定代码,而无需进行大量转换。
关于c# - API 不可知 Vector3、Matrix 等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5295258/