Как реализовать появление кнопок при нажатии другой кнопки?

Графический интерфейс пользователя

Как реализовать появление кнопок при нажатии другой кнопки?

Сообщение TurboIshak 29 окт 2022, 18:04

Допустим, у меня есть окно редактора, в котором находятся некоторые кнопки. Мне нужно сделать так, чтобы при нажатии кнопки появлялись другие кнопки (что-то типа разворачивания всех кнопок), а вместо кнопки, которая активирует те кнопки, появилась кнопка, деактивирующая активированные кнопки. В пример могу привести часть кода

Синтаксис:
Используется csharp
using UnityEngine;
using UnityEditor;
using System.Collections;
using System.Collections.Generic;

public class SampleMenu : EditorWindow
{
    [MenuItem("Window/SampleWindow #G")]

    static void OpenWindow()
    {
        EditorWindow.GetWindow(typeof(SampleMenu));
    }

    //Vector2 ScrollView = Vector2.zero;
    void OnGUI()
    {
        // ScrollView = GUILayout.BeginScrollView(ScrollView, false, false, GUILayout.ExpandWidth(false));

        EditorGUILayout.LabelField("Buttons:");

        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("Box", GUILayout.MaxWidth(115), GUILayout.MinWidth(70)))
        {
            GameObject newObject = new GameObject("Box");
            BoxCollider collider = newObject.AddComponent<UnityEngine.BoxCollider>();
            collider.isTrigger = true;
            Selection.activeGameObject = newObject;
        }

        if (GUILayout.Button("Mesh", GUILayout.MaxWidth(115), GUILayout.MinWidth(70)))
        {
            GameObject newObject = new GameObject("Mesh");
            MeshCollider collider = newObject.AddComponent<UnityEngine.MeshCollider>();
            Selection.activeGameObject = newObject;
        }
        EditorGUILayout.EndHorizontal();

        GUILayout.Space(10);

        EditorGUILayout.LabelField("Others:");

        if (GUILayout.Button("+", GUILayout.MaxWidth(20)))
        {
            //При нажатии этой кнопки должны появиться другие кнопки.
            //Также, она должна смениться на кнопку, которая скрывает активированные кнопки
        }

        //EditorGUILayout.EndScrollView();
    }
}
 
TurboIshak
UNец
 
Сообщения: 6
Зарегистрирован: 10 ноя 2021, 01:07

Re: Как реализовать появление кнопок при нажатии другой кнопки?

Сообщение 1max1 29 окт 2022, 20:35

Синтаксис:
Используется csharp
public class SampleMenu : EditorWindow
{
    [MenuItem("Window/SampleWindow #G")]

    static void OpenWindow()
    {
        EditorWindow.GetWindow(typeof(SampleMenu));
    }

    bool btnSwitcher = false;

    //Vector2 ScrollView = Vector2.zero;
    void OnGUI()
    {
        // ScrollView = GUILayout.BeginScrollView(ScrollView, false, false, GUILayout.ExpandWidth(false));

        EditorGUILayout.LabelField("Buttons:");

        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("Box", GUILayout.MaxWidth(115), GUILayout.MinWidth(70)))
        {
            GameObject newObject = new GameObject("Box");
            BoxCollider collider = newObject.AddComponent<UnityEngine.BoxCollider>();
            collider.isTrigger = true;
            Selection.activeGameObject = newObject;
        }

        if (GUILayout.Button("Mesh", GUILayout.MaxWidth(115), GUILayout.MinWidth(70)))
        {
            GameObject newObject = new GameObject("Mesh");
            MeshCollider collider = newObject.AddComponent<UnityEngine.MeshCollider>();
            Selection.activeGameObject = newObject;
        }
        EditorGUILayout.EndHorizontal();

        GUILayout.Space(10);

        EditorGUILayout.LabelField("Others:");

        if (!btnSwitcher)
        {
            if (GUILayout.Button("+", GUILayout.MaxWidth(20)))
            {
                btnSwitcher = true;
            }
        }
        else
        {
            if (GUILayout.Button("-", GUILayout.MaxWidth(20)))
            {
                btnSwitcher = false;
            }

            // тут рисуем другие кнопки
        }
        //EditorGUILayout.EndScrollView();
    }
}
 
Аватара пользователя
1max1
Адепт
 
Сообщения: 5214
Зарегистрирован: 28 июн 2017, 10:51


Вернуться в uGUI

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3