Unity - 在运行时更改游戏对象形状的最佳方式

时间:2015-10-30 18:01:08

标签: animation unity3d 2d sprite gameobject

我想在Unity3D中创建一个简单的2D游戏,其中一个实体必须增长和缩小。这是通过合并简单的形状来完成的。

下图中的一个粗略示例只是为了表明我的意思:

Image

通过添加组件并通过删除它们来缩小它。屏幕上会有很多实体,因此性能非常重要。

是否可以动态更改一个游戏对象的形状?如果没有,以下哪种解决方案更合适?为什么?

  1. 不断向前一个添加新的游戏对象(形状),然后删除它们?

  2. 制作动画。在这种情况下,是否可以在运行时更改动画速度,例如,首先它变得更快,然后变得更慢或缩小?我的问题是速度的变化是否适用于动画的整个循环,还是可以在中间应用它(这样缩小和增长的速度是不同的)?我希望后者能够发生。

  3. 如果您有任何其他建议我会很高兴听到它们。

2 个答案:

答案 0 :(得分:0)

取决于什么是"很多对象"什么是目标平台。

在任何情况下,您都可以在屏幕上轻松拥有数百个精灵,特别是如果它们被批量处理:http://docs.unity3d.com/Manual/DrawCallBatching.html

使用对象池有很大的性能优势, 而不是实例化新对象并摧毁旧对象。

拥有数百个动画对象会导致速度减慢, Mecanim Animator似乎比原始动画组件慢。

其他选择: - 创建在运行时修改的自定义网格(通过添加/删除顶点),这也允许自由修改形状(通过移动顶点):http://docs.unity3d.com/ScriptReference/Mesh.html

答案 1 :(得分:0)

创建一个空的游戏对象并将所有这些小块添加为其子元素。然后,您可以使用gameObject.SetActive(false/true);

禁用/启用您想要的任何内容