Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Animation Unity-在运行时更改游戏对象形状的最佳方法_Animation_Unity3d_2d_Sprite_Gameobject - Fatal编程技术网

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

Animation Unity-在运行时更改游戏对象形状的最佳方法,animation,unity3d,2d,sprite,gameobject,Animation,Unity3d,2d,Sprite,Gameobject,我想在Unity3D中创建一个简单的2D游戏,其中一个实体必须增长和收缩。这是通过合并简单形状来完成的 下面图片中的一个粗略示例只是为了说明我的意思: 它通过添加组件而增长,通过删除组件而收缩。屏幕上会有很多实体,因此性能非常重要 是否可以动态更改一个游戏对象的形状?如果不是,以下哪种解决方案更合适,为什么 在前一个游戏中不断添加新的游戏对象(形状),然后移除它们 创建一个动画。在这种情况下,是否可以在运行时更改动画的速度,例如,动画先变快,然后变慢或收缩?我的问题是速度的变化是否适用于动画的

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

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

它通过添加组件而增长,通过删除组件而收缩。屏幕上会有很多实体,因此性能非常重要

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

  • 在前一个游戏中不断添加新的游戏对象(形状),然后移除它们

  • 创建一个动画。在这种情况下,是否可以在运行时更改动画的速度,例如,动画先变快,然后变慢或收缩?我的问题是速度的变化是否适用于动画的整个循环,或者是否可以将其应用于中间(缩小和增长的速度不同)?我宁愿发生后一种情况

  • 如果您还有其他建议,我很乐意听取。

    取决于什么是“大量对象”以及什么是目标平台

    在任何情况下,您都可以轻松地在屏幕上显示数百个精灵,尤其是当它们成批出现时:

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

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

    其他选择:
    -创建在运行时修改的自定义网格(通过向其添加/移除顶点),这还允许自由修改形状(通过移动顶点):

    创建一个空游戏对象,并将所有这些小块添加为其子对象。然后你可以使用
    gameObject.SetActive(false/true)禁用/启用任何你想要的功能

    目标平台是Android。每个视图将有大约10个实体,所以如果我使用动画,将不会有大量的实体——就像有实体一样多。当使用对象堆叠时,我会有几千个对象(每个父对象会有几百个子对象)——在这种情况下,使用动画真的会比使用几千个游戏对象的性能更差吗?