Всем привет. У меня есть, допустим, 5 скриптов (все кроме одного отключены) и мне нужно, чтобы на колесико мыши отключался рабочий скрипт и включался следующий. Чтобы это сделать, я решил использовать массив, но я не знаю какой тип массива нужно поставить. Если массив из скриптов сделать не возможно, то как мне реализовать смену рабочего скрипта?
Все "скрипты" наследуются от MonoBehaviour, так что мы можем хранить массив ссылок на этот класс. Поменять активный элемент с помощью мыши - тривиальная задача через Input.GetAxis. Единственная проблема - отлавливать случай, когда массив компонентов пустой или когда в массиве все элементы выключены - вопрос не об этом, так что с этим вопросом сами как-нибудь справитесь.
public class ActivateComponentByMouseWheel : MonoBehaviour {
[SerializeField]
MonoBehaviour[] components;
[SerializeField, HideInInspector]
int activeIndex = -1;
void Update() {
float mouseWheelInput = Input.GetAxis("Mouse ScrollWheel");
if(mouseWheelInput > 0) {
SetNextActiveComponent(activeIndex + 1);
}
else if(mouseWheelInput < 0) {
SetNextActiveComponent(activeIndex - 1);
}
}
// Проверяем на уровне редактора, что в массиве компонентов только 1 компонент активен
// Также сохраняем индекс этого компонента
void OnValidate() {
int i;
for(i = 0; i < components.Length; i++) {
if (components[i].enabled) {
activeIndex = i;
break;
}
}
for(i += 1; i < components.Length; i++) {
components[i].enabled = false;
}
}
void SetNextActiveComponent(int nextIndex) {
// проверяем граничные индексы
if(nextIndex >= components.Length) {
nextIndex = 0;
}
else if(nextIndex <= 0) {
nextIndex = components.Length - 1;
}
// отключаем текущий компонент
components[activeIndex].enabled = false;
// включаем следующий компонент
components[activeIndex = nextIndex].enabled = true;
}
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники