2D Unity 游戏中的 3D 类

3D Classes in a 2D Unity Game

我有很多为 3D 游戏编写的 Unity 脚本,这些脚本在 2D 游戏中很有用,我真的不想重新发明轮子将它们添加到该游戏中。所以我的问题是,我可以在 2D 游戏(其中所有游戏对象都具有 2D 组件,如 Collider2D和 Rigidbody2D,并且会有其他脚本使用对 Physics2D.Raycast()、Physics2D.Gravity 等的调用)?我猜我 可以 做到这一点,但它会愚蠢低效,所以我不妨用 2D 类 重新实现。但我想我会先问一下。

感谢您的帮助!

就像乔的评论一样,你可以。不会有问题,因为 Unity 2D 函数将采用 vector2D,并且当将 Vector3D 传递给它们时,z 轴将被丢弃。

我的建议是对 3D2D 使用相同的脚本,因为这样可以更轻松地使用所有内容。例如,当您在 3D 脚本中进行大型游戏逻辑更改时,您必须在 2D 脚本中进行相同的更改。当您想对 2D 或 3D 代码进行故障排除时,这也是一个很大的痛苦。这是应该使用 C# Preprocessor Directives 的地方。

#if USE2D
//Put your 2D specific API code
#else
//Put your 3D specific API code
#endif

现在,要测试 2D 代码,只需将 #define USE2D 放在代码的顶部即可。当您想对 3D2D 代码进行故障排除时,这会很有帮助。您只需 评论 #define USE2D 来测试 3D 代码并 取消评论 它来测试 2D代码.