最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

UGUI-控件

2020-07-22 09:37 作者:unity_某某師_高錦錦  | 我要投稿

IMGUI 控件類型

可以創(chuàng)建許多不同的 IMGUI?控件。本部分列出了所有可用的顯示控件和交互式控件。此外還有其他影響控件布局的 IMGUI 函數(shù);在本指南的布局部分介紹了這些函數(shù)。

Label

Label?為非交互式控件。此控件僅用于顯示目的。不能單擊,也不能以其他方式進行移動。此控件最適合于純粹顯示信息之用。

/* GUI.Label 示例 */

// JavaScript

function OnGUI()

{

? ? GUI.Label(Rect(25, 25, 100, 30), "Label");

}

// C#

using UnityEngine;

using System.Collections;

public class GUITest : MonoBehaviour

{

? ? void OnGUI()

? ? {

? ? ? ? GUI.Label(new Rect(25, 25, 100, 30), "Label");

? ? }

}

示例代碼創(chuàng)建的 Label

Button

Button?是典型的交互式按鈕。點擊按鈕時,無論鼠標按下多久,都只會響應一次。松開鼠標按鍵后會立即響應。

基本用法

在 UnityGUI 中,點擊 Button 時將返回?true。要在點擊 Button 時執(zhí)行某些代碼,應將 GUI.Button 函數(shù)包裹在?if?語句中。if?語句內(nèi)部是點擊 Button 時將執(zhí)行的代碼。

/* GUI.Button 示例 */

// JavaScript

function OnGUI()

{

? ? if (GUI.Button(Rect(25, 25, 100, 30), "Button"))

? ? {

? ? ? ? // 點擊 Button 時執(zhí)行此代碼

? ? }

}

// C#

using UnityEngine;

using System.Collections;

public class GUITest : MonoBehaviour

{

? ? void OnGUI()

? ? {

? ? ? ? if (GUI.Button(new Rect(25, 25, 100, 30), "Button"))

? ? ? ? {

? ? ? ? ? ? // 點擊 Button 時執(zhí)行此代碼

? ? ? ? }

? ? }

}

示例代碼創(chuàng)建的 Button

RepeatButton

RepeatButton?是常規(guī)?Button?的變體。區(qū)別在于,__RepeatButton__ 將響應鼠標按鍵保持按下狀態(tài)的每一幀。由此可以創(chuàng)建單擊并保持功能。

基本用法

在 UnityGUI 中,點擊 RepeatButton 的每一幀都將返回?true。要在 Button 保持點擊狀態(tài)時執(zhí)行某些代碼,應將 GUI.RepeatButton 函數(shù)包裹在?if?語句中。if?語句內(nèi)部是 RepeatButton 保持點擊狀態(tài)時將執(zhí)行的代碼。

/* GUI.RepeatButton 示例 */

// JavaScript

function OnGUI()

{

? ? if (GUI.RepeatButton(Rect(25, 25, 100, 30), "RepeatButton"))

? ? {

? ? ? ? // RepeatButton 保持點擊狀態(tài)時的每一幀都將執(zhí)行此代碼

? ? }

}

// C#

using UnityEngine;

using System.Collections;

public class GUITest : MonoBehaviour

{

? ? void OnGUI()

? ? {

? ? ? ? if (GUI.RepeatButton(new Rect(25, 25, 100, 30), "RepeatButton"))

? ? ? ? {

? ? ? ? ? ? // RepeatButton 保持點擊狀態(tài)時的每一幀都將執(zhí)行此代碼

? ? ? ? }

? ? }

}

示例代碼創(chuàng)建的 Repeat Button

TextField

TextField?控件是一個包含文本字符串的交互式可編輯單行字段。

基本用法

TextField 將始終顯示一個字符串。必須提供要在 TextField 中顯示的字符串。對字符串進行編輯時,TextField 函數(shù)將返回已編輯的字符串。

/* GUI.TextField 示例 */

// JavaScript

var textFieldString = "text field";

function OnGUI()

{

? ? textFieldString = GUI.TextField(Rect(25, 25, 100, 30), textFieldString);

}

// C#

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);

? ? }

}

示例代碼創(chuàng)建的 TextField

TextArea

TextArea?控件是一個包含文本字符串的交互式可編輯多行區(qū)域。

基本用法

TextArea 將始終顯示一個字符串。必須提供要在 TextArea 中顯示的字符串。對字符串進行編輯時,TextArea 函數(shù)將返回已編輯的字符串。

/* GUI.TextArea 示例 */

// JavaScript

var textAreaString = "text area";

function OnGUI()

{

? ? textAreaString = GUI.TextArea(Rect(25, 25, 100, 30), textAreaString);

}

// C#

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);

? ? }

}

示例代碼創(chuàng)建的 TextArea

Toggle

Toggle?控件創(chuàng)建具有持久開/關狀態(tài)的復選框。用戶可通過點擊該復選框來更改狀態(tài)。

基本用法

Toggle 開/關狀態(tài)由 true/false 布爾值表示。必須提供布爾值作為參數(shù)來使 Toggle 表示實際狀態(tài)。如果點擊,則 Toggle 函數(shù)將返回一個新的布爾值。為了捕獲此交互性,必須指定布爾值來接受 Toggle 函數(shù)的返回值。

/* GUI.Toggle 示例 */

// JavaScript

var toggleBool = true;

function OnGUI()

{

? ? toggleBool = GUI.Toggle(Rect(25, 25, 100, 30), toggleBool, "Toggle");

}

// C#

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");

? ? }

}

示例代碼創(chuàng)建的 Toggle

Toolbar

Toolbar?控件本質(zhì)上是一行?Button。在 Toolbar 上,一次只能有一個 Button 處于激活狀態(tài),并且此 Button 將一直保持激活狀態(tài),直到點擊其他 Button。此行為模擬典型 Toolbar 的行為。在 Toolbar 上可以定義任意數(shù)量的 Button。

基本用法

Toolbar 中處于激活狀態(tài)的 Button 通過整數(shù)加以跟蹤。必須在函數(shù)中提供整數(shù)作為參數(shù)。要使 Toolbar 具有交互性,必須將整數(shù)分配給函數(shù)的返回值。提供的內(nèi)容數(shù)組中的元素數(shù)將決定 Toolbar 中顯示的 Button 數(shù)。

/* GUI.Toolbar 示例 */

// JavaScript

var toolbarInt = 0;

var toolbarStrings : String[] = ["Toolbar1", "Toolbar2", "Toolbar3"];

function OnGUI()

{

? ? toolbarInt = GUI.Toolbar(Rect(25, 25, 250, 30), toolbarInt, toolbarStrings);

}

// C#

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);

? ? }

}

示例代碼創(chuàng)建的 Toolbar

SelectionGrid

SelectionGrid?控件是一種多行?Toolbar。您可以決定網(wǎng)格中的列數(shù)和行數(shù)。一次只能激活一個 Button。

基本用法

SelectionGrid 中處于激活狀態(tài)的 Button 通過整數(shù)加以跟蹤。必須在函數(shù)中提供整數(shù)作為參數(shù)。要使 SelectionGrid 具有交互性,必須將整數(shù)分配給函數(shù)的返回值。提供的內(nèi)容數(shù)組中的元素數(shù)將決定 SelectionGrid 中顯示的 Button 數(shù)。還可以通過函數(shù)參數(shù)指定列數(shù)。

/* GUI.SelectionGrid 示例 */

// JavaScript

var selectionGridInt : int = 0;

var selectionStrings : String[] = ["Grid 1", "Grid 2", "Grid 3", "Grid 4"];

function OnGUI()

{

? ? selectionGridInt = GUI.SelectionGrid(Rect(25, 25, 100, 30), selectionGridInt, selectionStrings, 2);

}

// C#

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);

? ? }

}

示例代碼創(chuàng)建的 SelectionGrid

HorizontalSlider

HorizontalSlider?控件是一個典型的水平滑鈕,可拖動該滑鈕來更改介于預定最小值和最大值之間的值。

基本用法

滑鈕的位置存儲為浮點數(shù)。要顯示滑鈕的位置,請將該浮點數(shù)作為函數(shù)中的參數(shù)之一。此外還有兩個值用于確定最小值和最大值。如果希望滑鈕可調(diào),請將滑動條值浮點數(shù)指定為 Slider 函數(shù)的返回值。

/* Horizontal Slider 示例 */

// JavaScript

var hSliderValue : float = 0.0;

function OnGUI()

{

? ? hSliderValue = GUI.HorizontalSlider(Rect(25, 25, 100, 30), hSliderValue, 0.0, 10.0);

}

// C#

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);

? ? }

}

示例代碼創(chuàng)建的 Horizontal Slider

VerticalSlider

VerticalSlider?控件是一個典型的垂直滑鈕,可拖動該滑鈕來更改介于預定最小值和最大值之間的值。

基本用法

滑鈕的位置存儲為浮點數(shù)。要顯示滑鈕的位置,請將該浮點數(shù)作為函數(shù)中的參數(shù)之一。此外還有兩個值用于確定最小值和最大值。如果希望滑鈕可調(diào),請將滑動條值浮點數(shù)指定為 Slider 函數(shù)的返回值。

/* Vertical Slider 示例 */

// JavaScript

var vSliderValue : float = 0.0;

function OnGUI()

{

? ? vSliderValue = GUI.VerticalSlider(Rect(25, 25, 100, 30), vSliderValue, 10.0, 0.0);

}

// C#

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);

? ? }

}

示例代碼創(chuàng)建的 Vertical Slider

HorizontalScrollbar

HorizontalScrollbar?控件類似于?Slider?控件,但在視覺上類似于 Web 瀏覽器或文字處理程序的滾動元素。此控件用于導航?ScrollView?控件。

基本用法

Horizontal Scrollbar 的實現(xiàn)方式與 Horizontal Slider 相同,但有一個例外:還有一個參數(shù)用于控制滾動條滑鈕本身的寬度。

/* Horizontal Scrollbar 示例 */

// JavaScript

var hScrollbarValue : float;

function OnGUI()

{

? ? hScrollbarValue = GUI.HorizontalScrollbar(Rect(25, 25, 100, 30), hScrollbarValue, 1.0, 0.0, 10.0);

}

// C#

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);

? ? }

}

示例代碼創(chuàng)建的 Horizontal Scrollbar

VerticalScrollbar

VerticalScrollbar?控件類似于?Slider?控件,但在視覺上類似于 Web 瀏覽器或文字處理程序的滾動元素。此控件用于導航?ScrollView?控件。

基本用法

Vertical Scrollbar 的實現(xiàn)方式與 Vertical Slider 相同,但有一個例外:還有一個參數(shù)用于控制滾動條滑鈕本身的高度。

/* Vertical Scrollbar 示例 */

// JavaScript

var vScrollbarValue : float;

function OnGUI()

{

? ? vScrollbarValue = GUI.VerticalScrollbar(Rect(25, 25, 100, 30), vScrollbarValue, 1.0, 10.0, 0.0);

}

// C#

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);

? ? }

}

示例代碼創(chuàng)建的 Vertical Scrollbar

ScrollView

ScrollView?控件可顯示一個包含更大控件集合的可視區(qū)域。

基本用法

ScrollView 需要兩個?Rect?作為參數(shù)。第一個?Rect?定義 ScrollView 可視區(qū)域在屏幕上的位置和大小。第二個?Rect?定義可視區(qū)域內(nèi)包含的空間大小。如果可視區(qū)域內(nèi)的空間大于可視區(qū)域,則會根據(jù)需要顯示滾動條。還必須分配并提供 2D 矢量,該矢量用于存儲顯示的可視區(qū)域的位置。

/* ScrollView 示例 */

// JavaScript

var scrollViewVector : Vector2 = Vector2.zero;

var innerText : String = "I am inside the ScrollView";

function OnGUI()

{

? ? // 開始 ScrollView

? ? scrollViewVector = GUI.BeginScrollView(Rect(25, 25, 100, 100), scrollViewVector, Rect(0, 0, 400, 400));

? ? // 在 ScrollView 中放入一些內(nèi)容

? ? innerText = GUI.TextArea(Rect(0, 0, 400, 400), innerText);

? ? // 結束 ScrollView

? ? GUI.EndScrollView();

}

// C#

using UnityEngine;

using System.Collections;

public class GUITest : MonoBehaviour

{

? ? private Vector2 scrollViewVector = Vector2.zero;

? ? private string innerText = "I am inside the ScrollView";

? ? void OnGUI()

? ? {

? ? ? ? // 開始 ScrollView

? ? ? ? scrollViewVector = GUI.BeginScrollView(new Rect(25, 25, 100, 100), scrollViewVector, new Rect(0, 0, 400, 400));

? ? ? ? // 在 ScrollView 中放入一些內(nèi)容

? ? ? ? innerText = GUI.TextArea(new Rect(0, 0, 400, 400), innerText);

? ? ? ? // 結束 ScrollView

? ? ? ? GUI.EndScrollView();

? ? }

}

示例代碼創(chuàng)建的 ScrollView

Window

Window?是可拖動的控件容器。點擊時,Window 可獲得和失去焦點。因此,實現(xiàn)方式與其他控件略有不同。每個 Window 都有一個?id?編號,并且其內(nèi)容在一個單獨的函數(shù)內(nèi)聲明,該函數(shù)在 Window 獲得焦點時調(diào)用。

基本用法

Window 是唯一需要額外函數(shù)才能正常工作的控件。必須為 Window 提供?id?編號和要執(zhí)行的函數(shù)名稱。在 Window 函數(shù)中,可以創(chuàng)建實際行為或包含的控件。

/* Window 示例 */

// JavaScript

var windowRect : Rect = Rect(20, 20, 120, 50);

function OnGUI()

{

? ? windowRect = GUI.Window(0, windowRect, WindowFunction, "My Window");

}

function WindowFunction(windowID : int)

{

? ? // 在此處繪制窗口內(nèi)的任何控件

}

// C#

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)

? ? {

? ? ? ? // 在此處繪制窗口內(nèi)的任何控件

? ? }

}

示例代碼創(chuàng)建的 Window

GUI.changed

要檢測用戶是否在 GUI 中執(zhí)行了任何操作(點擊按鈕、拖動滑動條等),應從腳本中讀取?GUI.changed?值。當用戶執(zhí)行了操作時,結果將獲得 true,因此可以輕松驗證用戶輸入。

常見的情況是 Toolbar,這種情況下會希望根據(jù) Toolbar 中已點擊的 Button 來更改特定值。通常不希望在每次的調(diào)用?OnGUI()?中都分配該值,而只在點擊其中一個 Button 時才分配該值。

/* GUI.changed 示例 */

// JavaScript

private var selectedToolbar : int = 0;

private var toolbarStrings = ["One", "Two"];

function OnGUI()

{

? ? // 確定哪個按鈕處于激活狀態(tài),是否在此幀進行了點擊

? ? selectedToolbar = GUI.Toolbar(Rect(50, 10, Screen.width - 100, 30), selectedToolbar, toolbarStrings);

? ? // 如果用戶在此幀點擊了新的工具欄按鈕,我們將處理他們的輸入

? ? if (GUI.changed)

? ? {

? ? ? ? print("The toolbar was clicked");

? ? ? ? if (selectedToolbar == 0)

? ? ? ? {

? ? ? ? ? ? print("First button was clicked");

? ? ? ? }

? ? ? ? else

? ? ? ? {

? ? ? ? ? ? print("Second button was clicked");

? ? ? ? }

? ? }

}

// C#

using UnityEngine;

using System.Collections;

public class GUITest : MonoBehaviour

{

? ? private int selectedToolbar = 0;

? ? private string[] toolbarStrings = { "One", "Two" };

? ? void OnGUI()

? ? {

? ? ? ? // 確定哪個按鈕處于激活狀態(tài),是否在此幀進行了點擊

? ? ? ? selectedToolbar = GUI.Toolbar(new Rect(50, 10, Screen.width - 100, 30), selectedToolbar, toolbarStrings);

? ? ? ? // 如果用戶在此幀點擊了新的工具欄按鈕,我們將處理他們的輸入

? ? ? ? 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 控件,__GUI.changed__ 將返回 true。

UGUI-控件的評論 (共 條)

分享到微博請遵守國家法律
隆子县| 开封市| 仁寿县| 遂川县| 龙口市| 烟台市| 德格县| 永城市| 阳朔县| 图片| 彰化县| 西畴县| 渝中区| 阜阳市| 太保市| 定结县| 吉水县| 喜德县| 东光县| 德庆县| 景东| 呼玛县| 沂南县| 绥阳县| 襄城县| 屯门区| 五河县| 克山县| 什邡市| 泰宁县| 博野县| 万宁市| 理塘县| 巴南区| 彭山县| 正阳县| 河池市| 都昌县| 锡林浩特市| 谷城县| 红河县|