Среда, 08 Февраля 2023, 17:47

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Модератор форума: beril  
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Toggle
Toggle
desantaavДата: Пятница, 26 Февраля 2016, 10:09 | Сообщение # 1
был не раз
Сейчас нет на сайте
Здравствуйте. Есть такой вопрос, есть 2 объекта: объект 1 и объект 2, в нормальном состоянии объект 1 виден , объект 2 нет... как при помощи одной кнопки "Toggle" сделать при нажатие (например исчезновение "галочки") появление объекта 2 и исчезновение объекта 1 и при повторном нажатие (появление галочки) появление объекта 1 и исчезновении объекта 2. Делал при помощи 2х Toggle, без скрипта при помощи возможностей самой Unity, хочется сделать через один Toggle.
AntrixДата: Пятница, 26 Февраля 2016, 12:26 | Сообщение # 2
почетный гость
Сейчас нет на сайте
Можно через bool сделать, как вариант. Допустим, пусть у нас будет переменная isFirstSwitchVisible=True. То есть, при нажатии на "кнопку", проверяется состояние переменной (которая изначально True), затем первый объект исчезает, второй появляется а переменная bool станет равняться False. При повторном нажатии, проверяется состояние нашей переменной с другим значением и все возвращается обратно. Как то так. Ну и что-то наподобии кода:

Код

bool isFirstSwitchVisible=True;
void SwitchObject ()
{
if (isFirstSwitchVisible == True)
{
object1.enable = false;
object2.enable = true;
}
else
{
object1.enable = true;
object2.enable = false;
}
}


Ну а сами объекты / компоненты уже сам вытащишь.


Сообщение отредактировал Antrix - Пятница, 26 Февраля 2016, 12:27
desantaavДата: Пятница, 26 Февраля 2016, 13:33 | Сообщение # 3
был не раз
Сейчас нет на сайте
Код
public class SwitchObjects : MonoBehaviour {
    private GameObject obj1;
    private GameObject obj2;

    bool isFirstSwitchVisible = true;
    void SwitchObject()
    {
        if (isFirstSwitchVisible == true)
        {
            obj1.enable = false;
            obj2.enable = true;
        }
        else
        {
            obj1.enable = true;
            obj2.enable = false;
        }
    }

}

а что есть за "object1.enable = false;", извините, я то VBNET то ели знаю...)) а то прога на неё ругается :-)


Сообщение отредактировал desantaav - Пятница, 26 Февраля 2016, 13:33
AntrixДата: Пятница, 26 Февраля 2016, 13:57 | Сообщение # 4
почетный гость
Сейчас нет на сайте
Прошу прощения, перепутал.

Код
obj1.active = false;
desantaavДата: Пятница, 26 Февраля 2016, 14:08 | Сообщение # 5
был не раз
Сейчас нет на сайте
Все равно не ругается но светится зеленным... huh И как я понял нужно в самом Toggle в OnValueChanged внести 2 объекта
AntrixДата: Пятница, 26 Февраля 2016, 14:36 | Сообщение # 6
почетный гость
Сейчас нет на сайте
Ну я не знаю, как оно у вас устроено там. Я набросал на сцене два кубика и "рубильник". Повесил скрипт, добавил в него те два куба и нажимал на рубильник - кубики поочередно пропадали. Если добавить в начало скрипта, что бы сразу убирался второй (или какой там нужно), то при старте будет только один.
desantaavДата: Пятница, 26 Февраля 2016, 14:50 | Сообщение # 7
был не раз
Сейчас нет на сайте

Но че то не хочет работать, скорее что то я не то делаю
AntrixДата: Пятница, 26 Февраля 2016, 15:10 | Сообщение # 8
почетный гость
Сейчас нет на сайте
Я думаю, что так будет более понятней:
desantaavДата: Пятница, 26 Февраля 2016, 16:41 | Сообщение # 9
был не раз
Сейчас нет на сайте
Antrix, большое Человеческое спасибо, еслиб и я так мог ok
AntrixДата: Пятница, 26 Февраля 2016, 16:52 | Сообщение # 10
почетный гость
Сейчас нет на сайте
Я так понимаю, получилось? smile Да и не стоит благодарности, тем более, что пример "быдлокодерский", набросан на скорую руку в обеденный перерыв на работе. Там можно все сделать куда более "элегантнее"))

Сообщение отредактировал Antrix - Пятница, 26 Февраля 2016, 16:52
berilДата: Пятница, 26 Февраля 2016, 17:40 | Сообщение # 11
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Цитата desantaav ()
Все равно не ругается но светится зеленным..

Устарелое API
obj1.SetActive(false)




Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)
desantaavДата: Суббота, 12 Марта 2016, 19:06 | Сообщение # 12
был не раз
Сейчас нет на сайте
Здравствуйте. Как всегда в продолжение темы. Мне понадобилось еще один Toggle ( в продолжение Toggle2) для скрытие сразу этих двух объектов (использовал OnValueChaged GO.SetActive). То возникла проблема, после выключения Toggle2 все объекты исчезают но если выключить в первом Toggle кнопку (появится obj2)то при ВКлючение Toggle2 в Toggle в Is On она остается выключена, однако оба объекта видны... хотел сделать в Toggle2 скрипт но как было сказано выше не знаю пока C# хотел сделать типо такого
Код
       Toggle2 = false
            if obj1 = false  obj2 =true  then
                obj1 = false , obj2 =false

        elseif obj1 = true, obj2=false then
                 obj1 = false , obj2 =false

        elseif obj1 = false, obj2=true then
                 obj1 = false , obj2 =false

       toggle2 = true
                if obj1 = false  obj2 =false   then
                obj1 = true , obj2 =false

        elseif obj1 = false, obj2=true then
                 obj1 = true  , obj2 =false
думаю я донес свою мысль huh

Добавлено (06 марта 2016, 10:44)
---------------------------------------------
меня интересует именно Is On почему он не включается, есть ли какая функция под неё

Добавлено (12 марта 2016, 19:06)
---------------------------------------------
решил все таки эту проблему... 2 скрипта на два toggle:

Код
public Toggle tobbl1;
public Toggle tobbl2;
public GameObject obj1;
public  GameObject obj2;

    void Start () {
        obj1.SetActive(false );

    }   
    
    public void Toltest()
    {
      
       if(tobbl2.isOn  == true )
        {

            obj1.SetActive(false);
            obj2.SetActive(true);
           tobbl1.isOn = true;
            
        }
        else if(tobbl2.isOn == false)
        {

            obj1.SetActive(true);
            obj2.SetActive(false);

             tobbl1.isOn = true;
   
        }
    }

и
Код

    public Toggle tobbl1;
    public Toggle tobbl2;
    public GameObject obj1;
    public GameObject obj2;
  

    public void Toltest()
    {

        if (tobbl1.isOn == true)
        {

          // tobbl1.enabled  = true ;
           if (tobbl2.isOn == true)
           {
               obj1.gameObject.SetActive(false);
               obj2.gameObject.SetActive(true);
           }
           else if (tobbl2.isOn == false)
           {
               obj1.gameObject.SetActive(true);
               obj2.gameObject.SetActive(false);
           }

        }
        else if (tobbl1.isOn == false)
        {

            obj1.gameObject.SetActive(false);
            obj2.gameObject.SetActive(false);
        }
    }
   
Выгладить по дурацки, но для начала пойдёт
angel
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Toggle
  • Страница 1 из 1
  • 1
Поиск:

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