国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Unity3D】UI Toolkit容器

這篇具有很好參考價(jià)值的文章主要介紹了【Unity3D】UI Toolkit容器。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1 前言

????????UI Toolkit簡介?中介紹了 UI Builder、樣式屬性、UQuery、Debugger,UI Toolkit元素?中介紹了 Label、Button、TextField、Toggle、Radio Button、Slider、Progress Bar、Dropdown、Foldout 等元素,UI Toolkit樣式選擇器?中介紹了簡單選擇器、復(fù)雜選擇器、偽類選擇器等樣式選擇器,本文將介紹 UI Toolkit 中的容器,主要包含 VisualElement、ScrollView、ListView、GroupBox 等,官方介紹詳見→UXML elements reference。

2?VisualElement(空容器)

????????VisualElement 是一個(gè)空容器,便于組織和管理元素,官方介紹見→UXML element VisualElement。

? ? ? ? 1)屬性介紹?

uitoolkit,Unity3D,# Unity基礎(chǔ),VisualElement,ScrollView,ListView,GroupBox,UI Toolkit

  • View Data Key:用于視圖數(shù)據(jù)持久化(如:樹展開狀態(tài)、滾動(dòng)位置、縮放級別),作為視圖數(shù)據(jù)保存 / 加載的鍵,如果不設(shè)置此鍵將禁用該容器的持久性。
  • Picking Mode:判斷是否可以在 mouseEvents 期間選擇此容器。
  • Tooltip:鼠標(biāo)懸停到該容器上時(shí)彈出的提示文字。
  • Usage Hints:預(yù)期使用模式,便于系統(tǒng)加速某些操作。
  • Tab Index:用于對焦點(diǎn)環(huán)中的焦點(diǎn)對象進(jìn)行排序。
  • Focusable:容器是否能獲得焦點(diǎn)。

? ? ? ? 說明:View Data Key、Picking Mode、Tooltip、Usage Hints、Tab Index、Focusable 都是基類屬性,后文若出現(xiàn)這些屬性將不再贅述。?

? ? ? ? ?2)獲取根?VisualElement 容器

VisualElement rootVisualElement = GetComponent<UIDocument>().rootVisualElement;

????????3)注冊事件回調(diào)(RegisterCallback)

????????RegisterCallbackDemo.cs

using UnityEngine;
using UnityEngine.UIElements;

public class RegisterCallbackDemo : MonoBehaviour {
    private void Awake() {
        VisualElement rootVisualElement = GetComponent<UIDocument>().rootVisualElement;
        rootVisualElement.RegisterCallback<MouseDownEvent>(OnClickDown);
        rootVisualElement.RegisterCallback<ClickEvent>(OnClick);
    }

    private void OnClickDown(MouseDownEvent e) { // 鼠標(biāo)按下時(shí)事件回調(diào)
        Debug.Log("mousePosition=" + e.mousePosition + ", pressedButtons=" + e.pressedButtons); // 1:左鍵, 2:右鍵, 4:中鍵
    }

    private void OnClick(ClickEvent e) { // 鼠標(biāo)左鍵點(diǎn)擊時(shí)事件回調(diào)
        Debug.Log("target=" + e.target);
    }
}

????????說明:注冊的事件主要有以下幾種,官方介紹見→Event reference。

  • MouseDownEvent:鼠標(biāo)按下時(shí)觸發(fā)的事件。
  • MouseUpEvent:鼠標(biāo)抬起時(shí)觸發(fā)的事件。
  • ClickEvent:鼠標(biāo)左鍵點(diǎn)擊時(shí)觸發(fā)的事件。
  • MouseOverEvent:鼠標(biāo)進(jìn)入元素時(shí)觸發(fā)的事件。
  • MouseOutEvent:鼠標(biāo)離開元素時(shí)觸發(fā)的事件。
  • MouseMoveEvent:鼠標(biāo)移動(dòng)時(shí)觸發(fā)的事件。
  • MouseEnterEvent:鼠標(biāo)進(jìn)入元素或其子元素時(shí)觸發(fā)的事件。
  • MouseLeaveEvent:鼠標(biāo)離開元素和其所有子元素時(shí)觸發(fā)的事件。
  • MouseCaptureEvent:處理器開始捕獲鼠標(biāo)后觸發(fā)的事件。
  • MouseCaptureOutEvent:處理器停止捕獲鼠標(biāo)后觸發(fā)的事件。
  • MouseEnterWindowEvent:鼠標(biāo)進(jìn)入窗口時(shí)觸發(fā)的事件。
  • MouseLeaveWindowEvent:鼠標(biāo)離開窗口時(shí)觸發(fā)的事件。
  • WheelEvent:鼠標(biāo)滑輪滾動(dòng)時(shí)觸發(fā)的事件。

????????4)添加事件操作器(AddManipulator)

????????ManipulatorDemo.cs

using UnityEngine;
using UnityEngine.UIElements;

public class ManipulatorDemo : MonoBehaviour {
    private VisualElement rootVisualElement;

    private void Awake() {
        rootVisualElement = GetComponent<UIDocument>().rootVisualElement;
        Clickable leftClickManipulator = new Clickable(OnCtrlDoubleClicked);
        leftClickManipulator.activators.Clear();
        leftClickManipulator.activators.Add(new ManipulatorActivationFilter() {
            button = MouseButton.LeftMouse, // 鼠標(biāo)左鍵
            clickCount = 2, // 點(diǎn)擊次數(shù)
            modifiers = EventModifiers.Control // 按鍵
        });
        rootVisualElement.AddManipulator(leftClickManipulator);
    }

    private void OnCtrlDoubleClicked(EventBase e) { // Ctrl+Double Click事件回調(diào)
        Debug.Log("OnCtrlDoubleClicked");
    }
}

3 ScrollView(滾動(dòng)容器)

????????1)屬性介紹?

????????ScrollView 是一個(gè)滾動(dòng)容器,官方介紹見→UXML element ScrollView。

uitoolkit,Unity3D,# Unity基礎(chǔ),VisualElement,ScrollView,ListView,GroupBox,UI Toolkit

  • Mode:控制用戶滾動(dòng)內(nèi)容的方式,取值有 Vertical(垂直滾動(dòng))、Horizontal(水平滾動(dòng))、Vertical And?Horizontal(垂直和水平滾動(dòng))。
  • Nested Interaction Kind:滑動(dòng)到邊界后的行為,取值有 default(反彈)、Stop Scrolling(停止滑動(dòng))、Forward Scrolling(繼續(xù)向前滑動(dòng))。
  • Horizontal Scroller Visibility:水平滾動(dòng)條的可見性,取值有 Auto(僅在內(nèi)容顯示不下時(shí)才顯示滑動(dòng)條)、Always Visible(一直可見)、Hidden(一直隱藏)。
  • Vertical Scroller Visibility:垂直滾動(dòng)條的可見性,取值有 Auto(僅在內(nèi)容顯示不下時(shí)才顯示滑動(dòng)條)、Always Visible(一直可見)、Hidden(一直隱藏)。
  • Horizontal Page Size:控制水平滑動(dòng)的速度。
  • Vertical Page Size:控制垂直滑動(dòng)的速度。
  • Touch Scroll Type:觸摸滑動(dòng)類型,Unrestricted(不受約束的)、Elastic(彈性的)、Clamped(夾緊的)。
  • Scroll Deceleration Rate:滑動(dòng)停止時(shí)的減速度(速度的導(dǎo)數(shù),為 0 時(shí)立刻停止滑動(dòng))。
  • Elasticity:滑動(dòng)到邊界時(shí)的彈性值。

? ? ? ? 2)添加元素

? ? ? ? 將元素拖拽到 ScrollView 上,會(huì)自動(dòng)放在其 unity-content-container 元素下面,如下。?

uitoolkit,Unity3D,# Unity基礎(chǔ),VisualElement,ScrollView,ListView,GroupBox,UI Toolkit

? ? ? ? 也可以通過以下代碼添加元素。

VisualElement rootVisualElement = GetComponent<UIDocument>().rootVisualElement;
ScrollView scrollview = rootVisualElement.Q<ScrollView>();
scrollview.Add(new Label("LabelContent"));

4 ListView(列表)

????????ListView 是一個(gè)列表容器,官方介紹見→UXML element ListView。

? ? ? ? 1)屬性介紹

uitoolkit,Unity3D,# Unity基礎(chǔ),VisualElement,ScrollView,ListView,GroupBox,UI Toolkit

  • BindingPath:目標(biāo)屬性綁定的路徑。
  • Fixed Item Height:列表中 item 的高度,以像素為單位。
  • Virtualization Method:設(shè)置 item 高度是固定的還是動(dòng)態(tài)的,取值有 Fixed Height(固定高度)、Dynamic Height(動(dòng)態(tài)高度)。
  • Show Border:是否顯示邊框。
  • Selection Type:選擇類型,取值有 None(禁止選中)、Single(只能選中單個(gè) item)、Multiple(可以選中多個(gè) item)。
  • Show Alternation Row Backgrounds:顯示交替行背景,取值有 None(不顯示交替行背景)、Content Only(有內(nèi)容時(shí)才顯示交替行背景)、All(一直顯示交替行背景)。
  • Show Foldout Header:是否顯示折疊頁眉。
  • Header Title:頁眉標(biāo)題。
  • Show Add Remove Footer:是否顯示添加 / 刪除頁腳,如果顯示,在頁腳會(huì)出現(xiàn) "+" 和 "-" 按鈕。
  • Reorderable:是否允許 item 重排序。
  • Reorder Mode:重排序模式,取值有 Simple(在重排序時(shí)顯示標(biāo)準(zhǔn)的藍(lán)線拖動(dòng)器)、Animated(在每個(gè) item 之前添加拖拽句柄,可以用來拖拽單個(gè) item)。
  • Show Bound Collection Size:是否顯示 item 數(shù)。
  • Horizontal Scrolling:是否可以水平滑動(dòng)。

? ? ? ? 2)ListView 的使用

????????ListViewDemo.cs

using UnityEngine;
using UnityEngine.UIElements;
using System.Collections.Generic;

public class ListViewDemo : MonoBehaviour {
    private VisualElement root; // 根容器
    private ListView listView; // 列表
    private string[] itemsTitle = new string[] {"First", "Second", "Third", "Fourth"}; // item的標(biāo)題
    private int[] itemsData = new int[]{0, 1, 2, 3}; // item的數(shù)值

    private void Awake() {
        root = GetComponent<UIDocument>().rootVisualElement;
        listView = root.Q<ListView>();
        listView.fixedItemHeight = 60;
        listView.itemsSource = itemsData;
        listView.makeItem += MakeItem;
        listView.bindItem += BindItem;
        listView.onSelectionChange += OnSelectionChange;
    }

    private VisualElement MakeItem() { // 創(chuàng)建item元素, 這里以Label元素呈現(xiàn)item
        Label label = new Label();
        label.style.fontSize = 50;
        label.style.unityTextAlign = TextAnchor.MiddleLeft;
        return label;
    }

    private void BindItem(VisualElement visualElement, int index) { // 綁定item
        Label label = visualElement as Label;
        label.text = itemsTitle[index];
    }

    private void OnSelectionChange(IEnumerable<object> objs) { // 選中事件回調(diào)
        foreach (object item in objs) {
            int data = (int) item;
            Debug.Log(data);
        }
    }
}

? ? ? ? 運(yùn)行后,點(diǎn)擊 Second,顯示如下。?

uitoolkit,Unity3D,# Unity基礎(chǔ),VisualElement,ScrollView,ListView,GroupBox,UI Toolkit

? ? ? ? 打印日志如下。

uitoolkit,Unity3D,# Unity基礎(chǔ),VisualElement,ScrollView,ListView,GroupBox,UI Toolkit

5 GroupBox(分組盒子)

????????GroupBox 是一個(gè)邏輯分組容器,官方介紹見→UXML element GroupBox。

? ? ? ? 1)屬性介紹

uitoolkit,Unity3D,# Unity基礎(chǔ),VisualElement,ScrollView,ListView,GroupBox,UI Toolkit

  • Text:?分組標(biāo)題。

????????2)GroupBox 的使用

????????GroupBoxDemo.cs

using UnityEngine;
using UnityEngine.UIElements;

public class GroupBoxDemo : MonoBehaviour {
    private VisualElement root; // 根容器
    private GroupBox groupBox; // 分組盒子
    private string[] choiceLabel = new string[] {"First", "Second", "Third", "Fourth"}; // choice的標(biāo)簽

    private void Awake() {
        root = GetComponent<UIDocument>().rootVisualElement;
        groupBox = root.Q<GroupBox>();
        groupBox.text = "GroupBoxDemo";
        groupBox.style.fontSize = 50;
        root.Add(groupBox);
        for (int i = 0; i < choiceLabel.Length; i++) {
            AddChoice(i);
        }
    }

    private void AddChoice(int index) { // 添加單選項(xiàng)
        RadioButton choice = new RadioButton();
        choice.text = choiceLabel[index];
        choice.style.fontSize = 50;
        VisualElement ve = choice.Query<VisualElement>().AtIndex(2);
        ve.style.marginRight = 10;
        choice.RegisterValueChangedCallback(e => OnValueChanged(index, e));
        groupBox.Add(choice);
    }

    private void OnValueChanged(int index, ChangeEvent<bool> e) { // 選項(xiàng)變化回調(diào)函數(shù)
        Debug.Log("index=" + index + ", previousValue=" + e.previousValue + ", newValue=" + e.newValue);
    }
}

????????運(yùn)行后,點(diǎn)擊 Second,顯示如下。??

uitoolkit,Unity3D,# Unity基礎(chǔ),VisualElement,ScrollView,ListView,GroupBox,UI Toolkit

????????打印日志如下。

uitoolkit,Unity3D,# Unity基礎(chǔ),VisualElement,ScrollView,ListView,GroupBox,UI Toolkit文章來源地址http://www.zghlxwxcb.cn/news/detail-708836.html

到了這里,關(guān)于【Unity3D】UI Toolkit容器的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Unity3D】UI Toolkit數(shù)據(jù)動(dòng)態(tài)綁定

    【Unity3D】UI Toolkit數(shù)據(jù)動(dòng)態(tài)綁定

    ????????本文將實(shí)現(xiàn) cvs 表格數(shù)據(jù)與 UI Toolkit 元素的動(dòng)態(tài)綁定。 ????????如果讀者對 UI Toolkit 不是太了解,可以參考以下內(nèi)容。 UI Toolkit簡介 UI Toolkit容器 UI Toolkit元素 UI Toolkit樣式選擇器 UI Toolkit自定義元素 ? ? ? ? 本文完整資源見→UI Toolkit數(shù)據(jù)動(dòng)態(tài)綁定。 2.1?UI 搭建

    2024年02月08日
    瀏覽(90)
  • 【Unity3D小功能】Unity3D中實(shí)現(xiàn)點(diǎn)擊‘文字’出現(xiàn)‘UI面板’

    【Unity3D小功能】Unity3D中實(shí)現(xiàn)點(diǎn)擊‘文字’出現(xiàn)‘UI面板’

    推薦閱讀 CSDN主頁 GitHub開源地址 Unity3D插件分享 簡書地址 QQ群:398291828 大家好,我是佛系工程師 ☆恬靜的小魔龍☆ ,不定時(shí)更新Unity開發(fā)技巧,覺得有用記得一鍵三連哦。 寵粉博主又來了,今天有粉絲問我如何實(shí)現(xiàn)點(diǎn)擊一段文字然后出現(xiàn)的面板在那段文字附近顯示: 深入了

    2024年04月13日
    瀏覽(167)
  • unity3D之UI

    unity3D之UI

    1.canvas介紹 (1)Canvas屬于Unity的UGUI,UGUI提供了強(qiáng)大的可視化編輯,大大提高了GUI的開發(fā)效率。 (2)Canvas是所有UI組件的父物體,也就是說每一個(gè)UI組件都必須在Canvas下,作為Canvas的子物體,當(dāng)你創(chuàng)建一個(gè)UI控件時(shí),如果在Hierarchy下沒有Canvas組件的話,Unity會(huì)幫你自動(dòng)創(chuàng)建一個(gè)Canva

    2024年02月04日
    瀏覽(97)
  • 【Unity3D小功能】Unity3D中實(shí)現(xiàn)UI擦除效果、刮刮卡功能

    【Unity3D小功能】Unity3D中實(shí)現(xiàn)UI擦除效果、刮刮卡功能

    推薦閱讀 CSDN主頁 GitHub開源地址 Unity3D插件分享 簡書地址 我的個(gè)人博客 大家好,我是佛系工程師 ☆恬靜的小魔龍☆ ,不定時(shí)更新Unity開發(fā)技巧,覺得有用記得一鍵三連哦。 使用Unity3D實(shí)現(xiàn)UI的擦拭效果、刮刮卡功能的效果實(shí)現(xiàn)方式比較多,比如說用Shader、Texture渲染都是可以

    2024年02月04日
    瀏覽(158)
  • unity3D基礎(chǔ)操作之01--unity3d窗口界面介紹

    unity3D基礎(chǔ)操作之01--unity3d窗口界面介紹

    提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 1、Scene場景編輯窗口; 2、Game游戲運(yùn)行窗口; 3、Hierarchy場景物體列表窗口; 4、Project項(xiàng)目資源列表窗口; 5、Inspector屬性編輯列表窗口; 6、其他常調(diào)節(jié)窗口 在屏幕左上方為場景編輯窗口Scene,在場景編

    2024年02月06日
    瀏覽(31)
  • 使用Unity生成UI預(yù)制體 (Unity3D)

    在Unity中,預(yù)制體(Prefab)是一種非常有用的工具,用于生成可重復(fù)使用的UI元素。預(yù)制體使得UI的創(chuàng)建和管理變得更加簡單和高效。在本文中,我們將詳細(xì)介紹如何使用Unity生成UI預(yù)制體,并提供相應(yīng)的源代碼示例。 步驟1:創(chuàng)建UI元素 首先,我們需要?jiǎng)?chuàng)建UI元素,例如按鈕、

    2024年02月05日
    瀏覽(104)
  • 【Unity3D】實(shí)現(xiàn)UI點(diǎn)擊事件穿透

    【Unity3D】實(shí)現(xiàn)UI點(diǎn)擊事件穿透

    ? ????????注意:EventSystem.current.RaycastAll獲取到的對象列表是能夠接受事件的,假如你的按鈕Button自己身上沒有Image,而是Button的子物體有,那么你就要給這個(gè)子物體也加上標(biāo)簽Tag才能響應(yīng)到。 如果ExecuteEvents.Execute不管用,可以試試ExecuteEvents.ExecuteHierarchy

    2024年02月04日
    瀏覽(92)
  • Unity3D學(xué)習(xí)之UI系統(tǒng)——GUI

    Unity3D學(xué)習(xí)之UI系統(tǒng)——GUI

    設(shè)置Screen Type和Center Type 最終實(shí)現(xiàn)效果: 3.1.1 GUI 共同點(diǎn) 3.1.2 文本控件 可以傳圖片 在unity中拖入圖片 可以把Rect 設(shè)置成public 的變量,在控件中設(shè)置 文字和圖片均顯示 toolTip 獲取當(dāng)前選中的空間的附帶信息 GUI Style 控制樣式 3.1.3 按鈕控件 必須要按下并抬起才算被點(diǎn)擊 長按按鈕

    2024年01月22日
    瀏覽(98)
  • Unity3D學(xué)習(xí)之UI系統(tǒng)——UGUI

    Unity3D學(xué)習(xí)之UI系統(tǒng)——UGUI

    3.2.1 Screen Space -Overlay 覆蓋模式 3.2.2 Screen Space - Camera 攝像機(jī)模式 創(chuàng)建專門的攝像機(jī)渲染UI 并讓主攝像機(jī)不渲染UI層 3.2.3 World Space 寬高 * 縮放系數(shù) = UI界面大小 參考分辨率 圖片格式要改為Sprite 恒定像素模式計(jì)算公式 會(huì)根據(jù)當(dāng)前分辨率 和 參考分辨率的比率自動(dòng)計(jì)算UI的縮放量

    2024年02月21日
    瀏覽(118)
  • Unity3D學(xué)習(xí)之UI系統(tǒng)——NGUI

    Unity3D學(xué)習(xí)之UI系統(tǒng)——NGUI

    資源商店搜索 學(xué)習(xí)版自行搜索 導(dǎo)入即可 創(chuàng)建UI 創(chuàng)建NGUI后,掛載在UI Root 和其 子Camera的腳本 分辨率自適應(yīng)模式的基礎(chǔ) 3.1.1 分辨率概念 3.1.2 Root的作用 3.1.3 root腳本各組件 Minimun Height 和 Maximum Height 用于拖動(dòng)窗口時(shí),如果窗口變得很小了,UI不縮放的話,會(huì)擋住游戲,使用Flex

    2024年03月17日
    瀏覽(58)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包