Решили: порядок отрисовки частей юнита перестаёт быть константой префаба и ключуется в клипе как m_SortingOrder отдельных SpriteRenderer. Поверх этого — глагол риг-API вида SetDepth(part, BehindTorso | BehindHead | Front), который на кадре раскладывает кривые нужным рендерерам: аниматор пишет один вызов, дорожки появляются сами.

Почему: Unity даёт SpriteRenderer.sortingOrder особую обработку и анимирует его, хотя свойство целочисленное, — то есть «меч уходит за голову» это кривая с двумя ключами, а не архитектура. Отвергнуто по пути:

  • SortingGroup на конечность с анимацией ордера группы — невозможно физически: группа такой обработки НЕ получила, SortingGroup.sortingOrder не анимируется. Это была первая идея, и она умерла первой.
  • Компонент-пресет с одним анимируемым индексом (OnDidApplyAnimationProperties раскладывает ордера) — работает, но колбэк официально не документирован уже много лет. Закладывать авторинг анимаций на недокументированный колбэк ради экономии трёх дорожек — плохая сделка. Идея не выброшена: если состояний окажется мало и они станут повторяться, обёртка дешёвая.
  • Сортировка по Z вместо ордера — отвергнуто: Custom Axis (0,1,0) держит сортировку юнитов между собой по Y, и трогать её ради внутренностей одного юнита нельзя.
  • Дубли спрайтов «спереди/сзади» с переключением видимости — надёжно, но удваивает арт на каждую часть, которая бывает и спереди, и сзади.

Сказано: «В чем проблема главная, Никси. Иногда меч должен быть “за головой”. Иногда за телом, иногда после. Какая часть левой должна быть за телом (топ, наверное?). а down - перед. И тут очень сложная система кто за чем, хихи. Как быть?» (Макс, 2026-08-01, сессия 5d740c6c). Ответ на вопрос «как быть»: внутренний порядок конечности — константа (плечо под предплечьем, предплечье под оружием, оружие под кистью), меняется только «звено перед корпусом или за ним», и у меча это один рендерер, то есть одна дорожка.

Грабли:

  • Порядок нужен не «когда-нибудь», а прямо сейчас. Замер существующих клипов: Attack поднимает плечо до 168°, Attack2 до 147°, Attack3 до 182°, AttackCharge до 194° — рука заводится за голову. При нынешнем ордере Sword = 2 (ниже рук 4-6 и ниже ботинок 3) меч в замахе рисуется неправильно во всех четырёх клипах.
  • Sprint требует порядка ног: оба бедра ходят на 72° размаха, дальняя нога пересекает ближнюю. Но ноги НЕ входят в Mask_Action — переключать их порядок можно только в базовом слое.
  • Stun крутит Grip на −116° — при таком провороте оружие проходит через тело.
  • Ключ «Order in Layer», поставленный через инспектор, иногда сбрасывается в 0 (баг-трекер Unity). Нас минует: клипы у нас пишутся кодом, а SetCurve(path, typeof(SpriteRenderer), "m_SortingOrder", curve) идёт мимо инспектора.
  • Маски слоёв (Mask_Action, Mask_ShieldArm) покрывают и визуальные узлы (Arm_Top, Arm_Down), поэтому дорожки на них через слои проходят — но только для тех частей, что в маске есть.

Владелец правды: BoneUnit_Standart.prefab (базовые ордера частей), Assets/_Project/Scripts/Presentation/Body/SkeletalBodyVisual.cs (раскладка списка частей в sortingOrder и ордер группы по Y), клипы в Assets/_Project/Prefabs/Bones/*.anim.