В 2д лучше не меняйте position Z. Вместо этого используйте приоритет отрисовки. Представьте, что вы стоите в очереди на кассу в магазине. Все клиенты по очереди обсуживаются в том порядке, в котором пришли - вот тут аналогичная ситуация.
Вы используете совместно две системы - обычные спрайты (компонент UnityEngine.SpriteRenderer) и картинки интерфейса (компонент UnityEngine.UI.Image).
В настройках компонент SpriteRenderer вы можете заметить настройки "Sorting Layer" и "Sorting Order".
Первый обозначает очередь очереди. То есть чем меньше номер очереди, тем раньше она отрисуется. В нашем примере на кассе - это толпа пенсионеров, которых обычно пропускают вперёд по правилам многих магазинов.
В интерфейсе всё немного сложнее. Компонент Image рисуется внутри родительского Canvas - у него-то как раз вы и можете эти настройки отрисовки указать. А порядок отрисовки между разными Image уже определяется их порядком в иерархии - чем ближе к верхнему краю, тем раньше будет отрисован Image.