2D Unity游戏中的3D类

时间:2016-05-02 21:50:32

标签: unity3d game-physics 2d-games unity3d-2dtools

我为3D游戏编写了很多Unity脚本,这些脚本在2D游戏中非常有用,我真的不想重新发明轮子来将它们添加到游戏中。所以我的问题是,我可以在2D游戏中使用我当前的3D游戏脚本(使用Vector3s并调用Physics.Raycast(),Physics.Gravity等)(其中所有GameObjects都有像Collider2D和Rigidbody2D这样的2D组件将使用调用 Physics2D .Raycast(), Physics2D .Gravity等)的其他脚本?我猜我可以这样做,但它会是愚蠢的低效率,所以我不妨重新实现2D类。但我想先问一下。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

就像乔的评论一样,你可以。没有问题,因为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 代码。