Пятница, 19 Апреля 2024, 23:52

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Переключение между тремя объектами
Переключение между тремя объектами
labinzevvДата: Четверг, 25 Марта 2021, 08:39 | Сообщение # 1
частый гость
Сейчас нет на сайте
Привет Народ! Требуется Ваша помощь:
Нужно осуществить переключение между тремя объектами нажатием одной и той-же клавиши.
переключение между двумя сделал следующим образом:
Код

public GameObject a;
public GameObject b;

public bool select = false;

void Update()
{
   selectedTest();
}

public void selectedTest()
{
       if (Input.GetKey(KeyCode.K))
        {
            select = !select;
            if (select == true)
            {
                a.SetActive(false);
                b.SetActive(true);
                Debug.Log("1");
            }
            else
            {
                a.SetActive(true);
                b.SetActive(false);
                Debug.Log("2");
            }
        }
}


А вот как переключаться между тремя объектами (последовательно) Не могу догнать...


3d modeling, unfolding, and texturing. My works: https://vk.com/labinzevv
djwirtuozДата: Четверг, 25 Марта 2021, 09:04 | Сообщение # 2
почетный гость
Сейчас нет на сайте
не самое лучшее решение, но для быстрого прототипа подойдет. нет unity под рукой, писал "на глаз", могут быть ошибки


Мы отстроили реальный мир, превратив его в убожество, теперь отстраиваем виртуальный, надеясь на лучшее.

Сообщение отредактировал djwirtuoz - Четверг, 25 Марта 2021, 09:45
labinzevvДата: Четверг, 25 Марта 2021, 09:15 | Сообщение # 3
частый гость
Сейчас нет на сайте
Цитата djwirtuoz ()
не самое лучшее решение, но для быстрого прототипа подойдет. нет unity под рукой, писал "на глаз", могут быть ошибки

Код

public GameObject a;
public GameObject b;
public GameObject c;
int counter = 0;
int max_count_object;

public bool select = false;

void Update()
{
    selectedTest();
}

public void selectedTest()
{
    if (Input.GetKey(KeyCode.K))
    {
        switch (counter)
        {
            case 0:
                a.SetActive(true);
                b.SetActive(false);
                c.SetActive(false);
                Debug.Log("1");
            case 1:
                a.SetActive(false);
                b.SetActive(true);
                c.SetActive(false);
                Debug.Log("2");
            case 3:
                a.SetActive(false);
                b.SetActive(false);
                c.SetActive(true);
                Debug.Log("3");
        }

        counter++;
        if (counter > max_count_object) { counter = 0; }
    }
}



Отлично! Спасибо за помощь. Сейчас попробую.


3d modeling, unfolding, and texturing. My works: https://vk.com/labinzevv
djwirtuozДата: Четверг, 25 Марта 2021, 09:55 | Сообщение # 4
почетный гость
Сейчас нет на сайте
доделал, проверил, работает


Мы отстроили реальный мир, превратив его в убожество, теперь отстраиваем виртуальный, надеясь на лучшее.
drcrackДата: Четверг, 25 Марта 2021, 13:34 | Сообщение # 5
старожил
Сейчас нет на сайте
Код
        public List<GameObject> objects;

        int activeObjectIndex = -1;

        void Start()
        {
            NextObject();
        }

        void Update() {
            if (Input.GetKeyUp(KeyCode.K))
            {
                NextObject();
            }
        }

        void NextObject()
        {
            activeObjectIndex = (activeObjectIndex + 1) % objects.Count;
            for (var i = 0; i < objects.Count; i++)
            {
                objects[i].SetActive(i == activeObjectIndex);
            }
        }
k0feДата: Четверг, 25 Марта 2021, 13:36 | Сообщение # 6
BRONX
Сейчас нет на сайте
Код
public GameObject[] gameObjects;
private int counter = 0;

void Update(){
    SelectedTest();
}

public void SelectedTest(){
    if (Input.GetKey(KeyCode.K)){
        for(var i = 0; i < gameObjects.Length; i++){
         gameObjects[i].SetActive(i == counter);
        }

        counter = counter >= gameObjects.Length - 1 : 0 : counter + 1;
    }
}


Можно так, если устраивает перебор и не хочется много писать


мой стрим, который я редко включаю, но зато на нём я делаю игры
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Переключение между тремя объектами
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг