我想在Unity3D中创建一个简单的2D游戏,其中一个实体必须增长和缩小。这是通过合并简单的形状来完成的。
下图中的一个粗略示例只是为了表明我的意思:
通过添加组件并通过删除它们来缩小它。屏幕上会有很多实体,因此性能非常重要。
是否可以动态更改一个游戏对象的形状?如果没有,以下哪种解决方案更合适?为什么?
不断向前一个添加新的游戏对象(形状),然后删除它们?
制作动画。在这种情况下,是否可以在运行时更改动画速度,例如,首先它变得更快,然后变得更慢或缩小?我的问题是速度的变化是否适用于动画的整个循环,还是可以在中间应用它(这样缩小和增长的速度是不同的)?我希望后者能够发生。
如果您有任何其他建议我会很高兴听到它们。
答案 0 :(得分:0)
取决于什么是"很多对象"什么是目标平台。
在任何情况下,您都可以在屏幕上轻松拥有数百个精灵,特别是如果它们被批量处理:http://docs.unity3d.com/Manual/DrawCallBatching.html
使用对象池有很大的性能优势, 而不是实例化新对象并摧毁旧对象。
拥有数百个动画对象会导致速度减慢, Mecanim Animator似乎比原始动画组件慢。
其他选择: - 创建在运行时修改的自定义网格(通过添加/删除顶点),这也允许自由修改形状(通过移动顶点):http://docs.unity3d.com/ScriptReference/Mesh.html
答案 1 :(得分:0)
创建一个空的游戏对象并将所有这些小块添加为其子元素。然后,您可以使用gameObject.SetActive(false/true);