Комментарии 5
Круто, что вы популяризируете Godot, но ваша реализация явно нуждается в улучшении.
Вместо хардкода путей и неявного формирования массивов с изображениями, можно пометить переменные которые вы наполняете с помощью скана файлов аннотацией
@export
, тем самым обеспечив возможность редактировать список прямо из редактора. Количество кода уменьшится, а удобство его поддержки, наоборот, увеличится.Всё это:
if eye_number == eye_array.size():
eye_number = 0
if eye_number == -1:
eye_number = eye_array.size() - 1
можно переписать в одну строчку:
eye_number = eye_number % eye_array.size():
Читабельность повышается, вероятность ошибки при копипасте снижается.
3) Синглтон всегда здесь избыточен. У вас есть три простых компонента, которые делают одно и то же — лишь переключают значения типа int. Самое лучшее, что можно сделать, это вынести эту логику в отдельный скрипт, а кнопки и лейбл, вынести в отдельную сцену. В скрипте объявляется сигнал, который сигнализирует о том, что значение поменялось(нажали на кнопку). Тем кому нужно, подписываются на этот сигнал. Эти самые значения могут храниться в сцене, которая отвечает за настройку персонажа и при необходимости, пробрасывать эти данные вниз по иерархии.
И ещё, пускай это уже не относится к качеству реализации, но вместо скинов с заранее заданными цветами, можно навешивать на спрайт tint, который позволит игроку выбрать любой цвет. Если необходимо, чтобы некоторые места на скине сохраняли свой цвет, то можно для скина нарисовать маску, которая будет это всё дело регулировать.
можно переписать в одну строчку:
Но ведь в вашем коде может получиться отрицательное число (например, -1 % 10 = -1), а в изначальном варианте такого быть не может. Если там массив не пустой, конечно.
Спасибо за комментарий. Учту ваши советы.
Надеюсь на продолжение цикла статей
Редактор персонажа