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 |
почетный гость
Сейчас нет на сайте
| Прошу прощения, перепутал.
|
|
| |
desantaav | Дата: Пятница, 26 Февраля 2016, 14:08 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| Все равно не ругается но светится зеленным... И как я понял нужно в самом 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, большое Человеческое спасибо, еслиб и я так мог
|
|
| |
Antrix | Дата: Пятница, 26 Февраля 2016, 16:52 | Сообщение # 10 |
почетный гость
Сейчас нет на сайте
| Я так понимаю, получилось? Да и не стоит благодарности, тем более, что пример "быдлокодерский", набросан на скорую руку в обеденный перерыв на работе. Там можно все сделать куда более "элегантнее"))
Сообщение отредактировал 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 думаю я донес свою мысль Добавлено (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); } }
Выгладить по дурацки, но для начала пойдёт
|
|
| |