Unity 6.3
0 онлайн 17 гостей 3 в системе
Вход

IMGUI Управление

IMGUI Типы управления

Существует множество различных IMGUI Управляющих, которые можно создать. В этом разделе перечислены все доступные дисплейные и интерактивные Управляющие. Существуют и другие IMGUI функции, которые влияют на расположение Управляющих, которые описаны в разделе Расположение Руководства.

Label

Элемент Этикетка неинтерактивен и предназначен только для отображения. Его нельзя нажать или переместить иным способом. Он лучше всего подходит исключительно для вывода информации.

/* GUI.Label example */

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour 
{
                    
    void OnGUI () 
    {
        GUI.Label (new Rect (25, 25, 100, 30), "Label");
    }

}


Метка, созданная примерным кодом
Метка, созданная примерным кодом

Button

Кнопка Кнопка является типичной интерактивной кнопкой. Она отвечает только один раз при нажатии, независимо от того, сколько времени мышка находится в нажатии. Ответ происходит, как только кнопка мыши освобождается.

Основное использование

В UnityGUI, Кнопки вернутся истинно Чтобы выполнить какой-то код при нажатии на Кнопку, вы обворачиваете GUI.Button функции в если заявление. внутри если statement — это код, который будет выполнен при нажатии кнопки Button.

/* GUI.Button example */

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour 
{
                    
    void OnGUI () 
    {
        if (GUI.Button (new Rect (25, 25, 100, 30), "Button")) 
        {
            // This code is executed when the Button is clicked
        }
    }

}


Кнопка, созданная примерным кодом
Кнопка, созданная примерным кодом

RepeatButton

RepeatButton — разновидность обычного Кнопка. В отличие от него, RepeatButton реагирует в каждом кадре, пока кнопка мыши удерживается нажатой. Это позволяет реализовать действие по нажатию и удержанию.

Основное использование

В UnityGUI, RepeatButtons вернется истинно для каждого кадра, на который они нажаты. Чтобы выполнить какой-то код во время нажатия кнопки, вы обворачиваете GUI.RepeatButton функции в если заявление. внутри если заявление является кодом, который будет выполняться в то время как RepeatButton остается нажатой.

/* GUI.RepeatButton example */

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour 
{
                    
    void OnGUI () 
    {
        if (GUI.RepeatButton (new Rect (25, 25, 100, 30), "RepeatButton")) 
        {
            // This code is executed every frame that the RepeatButton remains clicked
        }
    }

}


Кнопка повторения, созданная примером кода
Кнопка повторения, созданная примером кода

TextField

Контроль TextField представляет собой интерактивное, редактируемое однострочное поле, содержащее текстовую строку.

Основное использование

Функция TextField всегда будет отображать строку. Вы должны указать строку, которая будет отображаться в TextField. Когда строка изменяется, функция TextField возвращает измененную строку.

/* GUI.TextField example */

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour 
{
                    
    private string textFieldString = "text field";
    
    void OnGUI () 
    {
        textFieldString = GUI.TextField (new Rect (25, 25, 100, 30), textFieldString);
    }

}


TextField, созданный примерным кодом
TextField, созданный примерным кодом

TextArea

Контроль TextArea представляет собой интерактивную, редактируемую многострочную область, содержащую текстовую строку.

Основное использование

Функция TextArea всегда будет отображать строку. Вы должны указать строку, которая будет отображаться в TextArea. Когда строка изменяется, функция TextArea возвращает измененную строку.

/* GUI.TextArea example */

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour
{
                    
    private string textAreaString = "text area";
    
    void OnGUI ()
    {
        textAreaString = GUI.TextArea (new Rect (25, 25, 100, 30), textAreaString);
    }

}


TextArea, созданный примерным кодом
TextArea, созданный примерным кодом

Toggle

Элемент управления Переключить создаёт флажок с сохраняемым состоянием включения или отключения. Пользователь может изменить состояние, щёлкнув флажок.

Основное использование

Состояние переключателя «вкл./выкл.» представлено логическим значением true/false. Вы должны передать логическое значение в качестве параметра, чтобы переключатель отражал фактическое состояние. При нажатии функция Toggle возвращает новое логическое значение. Чтобы использовать это взаимодействие, вы должны присвоить возвращаемое функцией Toggle значение логической переменной.

/* GUI.Toggle example */

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour 
{
    private bool toggleBool = true;
    
    void OnGUI () 
    {
        toggleBool = GUI.Toggle (new Rect (25, 25, 100, 30), toggleBool, "Toggle");
    }
}


Переключатель, созданный примерным кодом
Переключатель, созданный примерным кодом

Toolbar

Элемент управления Панель инструментов по сути представляет собой строку кнопок. Одновременно может быть активна только одна кнопка Toolbar; она остаётся активной, пока не будет нажата другая. Такое поведение имитирует работу обычной Toolbar. На Toolbar можно создать произвольное число кнопок.

Основное использование

Активная Кнопка в Панели инструментов отслеживается через целое число. Вы должны предоставить целое число в качестве аргумента в функции. Чтобы сделать Панель инструментов интерактивной, вы должны назначить целое число возвращаемому значению функции. Количество элементов в массиве содержимого, который вы предоставляете, будет определять количество Кнопок, которые будут показаны в Панели инструментов.

/* GUI.Toolbar example */

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour 
{
                    
    private int toolbarInt = 0;
    private string[] toolbarStrings = {"Toolbar1", "Toolbar2", "Toolbar3"};
    
    void OnGUI () 
    {
        toolbarInt = GUI.Toolbar (new Rect (25, 25, 250, 30), toolbarInt, toolbarStrings);
    }

}


Панель инструментов, созданная примером кода
Панель инструментов, созданная примером кода

SelectionGrid

Управление SelectionGrid представляет собой многострочную Панель инструментов. Вы можете определить количество столбцов и строк в сетке. Только одна Кнопка может быть активной одновременно.

Основное использование

Активная Кнопка в SelectionGrid отслеживается через целое число. Вы должны предоставить целое число в качестве аргумента функции. Чтобы сделать SelectionGrid интерактивным, вы должны назначить целое число возвращаемому значению функции. Количество элементов в массиве контента, который вы предоставляете, будет определять количество Кнопок, которые будут показаны в SelectionGrid. Вы также можете диктовать количество столбцов через аргументы функции.

/* GUI.SelectionGrid example */

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour 
{
                    
    private int selectionGridInt = 0;
    private string[] selectionStrings = {"Grid 1", "Grid 2", "Grid 3", "Grid 4"};
    
    void OnGUI () 
    {
        selectionGridInt = GUI.SelectionGrid (new Rect (25, 25, 300, 60), selectionGridInt, selectionStrings, 2);
    
    }

}


SelectionGrid, созданный примерным кодом
SelectionGrid, созданный примерным кодом

HorizontalSlider

Управление HorizontalSlider представляет собой типичное горизонтальное скользящее колесо, которое можно перетаскивать для изменения значения между заранее определенными значениями мин и макс.

Основное использование

Положение кнопки Slider сохраняется в виде числа с плавающей запятой. Чтобы отобразить положение кнопки, вы предоставляете это число с плавающей запятой в качестве одного из аргументов функции. Есть два дополнительных значения, которые определяют минимальное и максимальное значения. Если вы хотите, чтобы кнопка Slider была регулируемой, назначьте значение слайдера float как возвращаемое значение функции Slider.

/* Horizontal Slider example */

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour 
{
                    
    private float hSliderValue = 0.0f;
    
    void OnGUI () 
    {
        hSliderValue = GUI.HorizontalSlider (new Rect (25, 25, 100, 30), hSliderValue, 0.0f, 10.0f);
    }

}


Горизонтальный ползунок, созданный примером кода
Горизонтальный ползунок, созданный примером кода

VerticalSlider

Управление VerticalSlider представляет собой типичное вертикальное скользящее колесо, которое можно перетаскивать для изменения значения между заранее определенными значениями мин и макс.

Основное использование

Положение кнопки Slider сохраняется в виде числа с плавающей запятой. Чтобы отобразить положение кнопки, вы предоставляете это число с плавающей запятой в качестве одного из аргументов функции. Есть два дополнительных значения, которые определяют минимальное и максимальное значения. Если вы хотите, чтобы кнопка Slider была регулируемой, назначьте значение слайдера float как возвращаемое значение функции Slider.

/* Vertical Slider example */

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour 
{
                    
    private float vSliderValue = 0.0f;
    
    void OnGUI () 
    {
        vSliderValue = GUI.VerticalSlider (new Rect (25, 25, 100, 30), vSliderValue, 10.0f, 0.0f);
    }

}


Вертикальный ползунок, созданный примером кода
Вертикальный ползунок, созданный примером кода

HorizontalScrollbar

Управление HorizontalScrollbar похоже на Слайдер, но визуально похоже на Scrolling элементы для веб-браузеров или текстовых редакторов. Это управление используется для навигации по ScrollView.

Основное использование

Горизонтальные панели прокрутки реализованы так же, как и Горизонтальные Слайдеры, за одним исключением: есть дополнительный аргумент, который управляет шириной самого кнопки Панели прокрутки.

/* Horizontal Scrollbar example */

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour 
{
    private float hScrollbarValue;
    
    void OnGUI () 
    {
        hScrollbarValue = GUI.HorizontalScrollbar (new Rect (25, 25, 100, 30), hScrollbarValue, 1.0f, 0.0f, 10.0f);
    }

}


Горизонтальная панель прокрутки, созданная примером кода
Горизонтальная панель прокрутки, созданная примером кода

VerticalScrollbar

Управление VerticalScrollbar похоже на Управление Слайдер, но визуально похоже на элементы прокрутки для веб-браузеров или текстовых редакторов. Это управление используется для навигации по Управлению ScrollView.

Основное использование

Вертикальные панели прокрутки реализованы так же, как и вертикальные ползунки, за одним исключением: есть дополнительный аргумент, который управляет высотой самого кнопки панели прокрутки.

/* Vertical Scrollbar example */

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour
{
                    
    private float vScrollbarValue;
    
    void OnGUI ()
    {
        vScrollbarValue = GUI. VerticalScrollbar (new Rect (25, 25, 100, 30), vScrollbarValue, 1.0f, 10.0f, 0.0f);
    }
}


Вертикальная панель прокрутки, созданная примером кода
Вертикальная панель прокрутки, созданная примером кода

ScrollView

, ScrollViews, — это элементы управления, которые отображают видимую область гораздо большего набора элементов управления.

Основное использование

ScrollViews требует двух Rects в качестве аргументов. Первый Прямая определяет расположение и размер отображаемой ScrollView области на экране. Второй Прямая определяет размер пространства, содержащегося внутри отображаемой области. Если пространство внутри отображаемой области больше, чем отображаемая область, то будут появляться соответствующие панели прокрутки. Вы также должны назначить и предоставить вектор 2D, который хранит позицию отображаемой отображаемой области.

/* ScrollView example */

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour 
{
                    
    private Vector2 scrollViewVector = Vector2.zero;
    private string innerText = "I am inside the ScrollView";
    
    void OnGUI () 
    {
        // Begin the ScrollView
        scrollViewVector = GUI.BeginScrollView (new Rect (25, 25, 100, 100), scrollViewVector, new Rect (0, 0, 400, 400));
    
        // Put something inside the ScrollView
        innerText = GUI.TextArea (new Rect (0, 0, 400, 400), innerText);
    
        // End the ScrollView
        GUI.EndScrollView();
    }

}


ScrollView, созданный примерным кодом
ScrollView, созданный примерным кодом

Window

Windows являются перетаскиваемыми контейнерами Управлений. Они могут получать и терять фокус при нажатии. Из-за этого они реализованы немного иначе, чем другие Управления. Каждое Окно имеет Идентификатор номер, и его содержимое объявляется внутри отдельной функции, которая вызывается, когда Окно имеет фокус.

Основное использование

Windows являются единственными Управляющими, которые требуют дополнительной функции для надлежащей работы. Вы должны предоставить Идентификатор номер и имя функции, которая будет выполняться для Окна. В функции Окна вы создаете свои фактические поведения или содержащиеся Управляющие.

/* Window example */

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour 
{
                    
    private Rect windowRect = new Rect (20, 20, 120, 50);
    
    void OnGUI ()
    {
        windowRect = GUI.Window (0, windowRect, WindowFunction, "My Window");
    }
    
    void WindowFunction (int windowID) 
    {
        // Draw any Controls inside the window here
    }

}


Окно, созданное примерным кодом
Окно, созданное примерным кодом

GUI.changed

Чтобы определить, сделал ли пользователь какое-либо действие в GUI (нажал кнопку, перетащил ползунок и т.д.), прочитайте значение GUI.changed из вашего скрипта. Это значение устанавливается в true, когда пользователь что-то сделал, что облегчает проверку ввода пользователя.

Обычным сценарием является Панель Инструментов, где вы хотите изменить определенное значение на основе того, какая Кнопка в Панели Инструментов была нажата. Вы не хотите назначать значение в каждом вызове OnGUI(), только когда одна из Кнопок была нажата.

/* GUI.changed example */

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour
{
                    
    private int selectedToolbar = 0;
    private string[] toolbarStrings = {"One", "Two"};
    
    void OnGUI () 
    {
        // Determine which button is active, whether it was clicked this frame or not
        selectedToolbar = GUI.Toolbar (new Rect (50, 10, Screen.width - 100, 30), selectedToolbar, toolbarStrings);
    
        // If the user clicked a new Toolbar button this frame, we'll process their input
        if (GUI.changed)
        {
            Debug.Log("The toolbar was clicked");
    
            if (0 == selectedToolbar)
            {
                Debug.Log("First button was clicked");
            }
            else
            {
                Debug.Log("Second button was clicked");
            }
        }
    }

}


GUI.changed возвратит true, если любой GUI Управляющий был помещен до того, как с ним манипулировал пользователь.