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 轴将被丢弃。
我的建议是对 3D 和 2D 使用相同的脚本,因为这样可以更轻松地使用所有内容。例如,当您在 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
放在代码的顶部即可。当您想对 3D 和 2D 代码进行故障排除时,这会很有帮助。您只需 评论 #define USE2D
来测试 3D 代码并 取消评论 它来测试 2D代码.
我有很多为 3D 游戏编写的 Unity 脚本,这些脚本在 2D 游戏中很有用,我真的不想重新发明轮子将它们添加到该游戏中。所以我的问题是,我可以在 2D 游戏(其中所有游戏对象都具有 2D 组件,如 Collider2D和 Rigidbody2D,并且会有其他脚本使用对 Physics2D.Raycast()、Physics2D.Gravity 等的调用)?我猜我 可以 做到这一点,但它会愚蠢低效,所以我不妨用 2D 类 重新实现。但我想我会先问一下。
感谢您的帮助!
就像乔的评论一样,你可以。不会有问题,因为 Unity 2D 函数将采用 vector2D,并且当将 Vector3D 传递给它们时,z 轴将被丢弃。
我的建议是对 3D 和 2D 使用相同的脚本,因为这样可以更轻松地使用所有内容。例如,当您在 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
放在代码的顶部即可。当您想对 3D 和 2D 代码进行故障排除时,这会很有帮助。您只需 评论 #define USE2D
来测试 3D 代码并 取消评论 它来测试 2D代码.