2015-10-30 3 views
2

Я хочу создать простую 2D-игру в Unity3D, в которой одно из сущностей должно расти и сокращаться. Это делается путем слияния простых форм.Единство - лучший способ изменить форму игрового объекта во время выполнения

Грубый пример на рисунке ниже, чтобы показать, что я имею в виду:

Image

Он растет путем добавления компонентов и сжимается, удаляя их. На экране будет много объектов, поэтому производительность очень важна.

Можно ли динамически изменять форму одного игрового объекта? Если нет, то какое из следующих решений более подходит и почему?

  1. Постоянно добавлять новые игровые объекты (фигуры) в предыдущий, а затем удалять их?

  2. Создайте анимацию. В этом случае можно изменить скорость анимации во время выполнения, например, сначала она растет быстрее, а затем растет медленнее или сжимается? Моя проблема заключается в том, будет ли изменение скорости применяться ко всему циклу анимации или можно применить его посередине (так что скорость сокращения и роста отличается)? Я предпочел бы, чтобы последнее произошло.

Если у вас есть другие предложения, я был бы рад их услышать.

ответ

0

Зависит от того, что такое «много объектов» и какова целевая платформа.

Вы можете легко иметь сотни спрайтов на экране в любом случае, особенно если они получают порционный: http://docs.unity3d.com/Manual/DrawCallBatching.html

И есть большой выигрыш в производительности использовать группировку объектов вместо Instancing новых объектов и уничтожение старых.

Наличие сотен анимированных объектов приведет к замедлению, Mecanim Animator выглядит медленнее, чем исходный компонент анимации.

Другие варианты: - Создание пользовательских сетки, которые вы изменяете во время выполнения (путем добавления/removeing ​​вершины к ней), это также позволяет свободно изменять формы (путем перемещения вершин): http://docs.unity3d.com/ScriptReference/Mesh.html

+0

Целевая платформа - Android. В представлении будет около 10 объектов, поэтому, если я использую анимацию, не будет огромных сумм - столько же, сколько есть сущностей. При использовании укладки объектов у меня было бы несколько тысяч объектов (у каждого родительского объекта было бы несколько сотен дочерних объектов) - будет ли использование анимаций действительно хуже для производительности, чем наличие нескольких тысяч игровых объектов в этом случае? –

0

Создать пустой игрового объекта и добавить все эти маленькие кусочки в качестве своего ребенка. Затем вы можете отключить/включить то, что вы хотите, с помощью gameObject.SetActive(false/true);

Смежные вопросы