Кеура, в твоём участке кода, где ты находишь дочерние объекты, 8 строк, и есть закономерность. Если ты захочешь их всех по очереди перебрать, это будет не так и просто.
А с массивом намного проще. Смотри, доступ к переменной теперь будет посредством индекса, например если тебе нужно проверить если объект который нажали, будет цикл:
Глобальная переменная, хранит индекс кнопки, которая была наведёна, чтобы при отведении, скрыть её спрайт.
Далее в цикле мы присваиваем временную переменную (я обычно присваивал, а не ссылался к функциям, как-то внушает больше доверия.
Затем проверяем, если объект на который навели уже не тот что в прошлый раз, тогда скрываем тот что был, и идём дальше. Либо если вообще нету наведённого (равен нулю), тогда пропускаем скрытие. Далее перелистываем массив объектов (button), и если объект равен тому на который камера нажала, показываем спрайт (spriteNumber) с числом, который заранее был поставлен на позицию чуть выше кнопки и спрятан.
Если хоть один объект наведён, то будет назначено значение последней наведённой кнопки (lastPickedButton).
pickedEntity% = PickedEntity()
If (lastPickedButton = 0 OR button[lastPickedButton] <> pickedEntity)
If (lastPickedButton <> 0)
HideEntity spriteNumber[lastPickedButton]
lastPickedButton = 0
EndIf
For i=1 To 8
If (button[i]=pickedEntity)
lastPickedButton = i
ShowEntity spriteNumber[i]
EndIf
Next
EndIf
ЗЫ, писал в броузере, могут быть ошибки. Думаю идея ясна.