c# - API 不可知 Vector3、Matrix 等?

标签 c# xna unity3d slimdx opentk

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

这种事情有最佳实践吗?这不像我可以要求 Microsoft、Unity 等去野餐并坚持一个通用的接口(interface)。

最佳答案

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

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

关于c# - API 不可知 Vector3、Matrix 等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5295258/

相关文章:

c# - 如何减少后台工作程序中使用匿名管道的程序的 CPU 使用率?

c# - 个人项目计划

c# - 在 Unity3D 中,我正在学习 tilemap 教程。但是,UV 布局出现奇怪。我怎样才能解决这个问题?

c# - 为什么我的 http 请求响应不能解析成一个整数?

C#:使用条件属性进行测试

c# - 在 C# 中运行并显示富文本文件中的 exe 文件

c# - 为什么 StreamReader.ReadToEnd 有效但 Stream.Read 无效?

c# - 粒子引擎 - XNA/C#

c# - 将 Kinect ColorImageFrame 转换为位图

unity3d - Unity3d 中的 Signalr 和 WebSocketSharp