【Unity之FGUI】白仙章Fairy GUI控件详解二

news2024/12/25 14:45:05

在这里插入图片描述


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创
👨‍💻 收录于专栏:就业宝典

🅰️推荐专栏

⭐-[今日信息差点击进入⭐



文章目录

    • 前言
      • 😶‍🌫️8.按钮(一个扩展组件)
      • 😶‍🌫️9.单选和复选按钮
      • 😶‍🌫️10.进度条(本质:组件)
      • 😶‍🌫️11.滑动条(本质:组件)
      • 😶‍🌫️12.滚动条(本质:组件)
      • 😶‍🌫️13.滚动容器(本质:组件)
      • 😶‍🌫️14.列表(本质:组件)
      • 😶‍🌫️15.下拉框(本质:组件)
    • 🪶(==快捷键==)
    • 🅰️


前言


😶‍🌫️8.按钮(一个扩展组件)


在这里插入图片描述
在这里插入图片描述+ 文本标题和图形标题勾选后
在这里插入图片描述

  • 四个状态(未按,按下,进入,退出)
    在这里插入图片描述
  • 元件功能属性
    在这里插入图片描述
   

        //1.获取按钮控件
        GButton btn = view.GetChild("按钮名").asButton;
        btn.text = "按钮的内容";
        btn.icon = "ui://xx/xxxx";//图标

        GObject obj = view.GetChild("按钮名");
        obj.text = "";
        obj.icon = "ui://xx/xxxx";

在这里插入图片描述

  • 若面板上未如此设置,则通过以下代码动态创建
        //2.音效相关设置
        UIConfig.buttonSound =   (NAudioClip)UIPackage.GetItemAssetByURL("ui://xx/xxx");
        //设置默认音效,放在显示面板之前,不在这里
        UIConfig.buttonSoundVolumeScale = 0.5f;   //设置音效大小
        GRoot.inst.EnableSound();   //开启音效
        GRoot.inst.DisableSound();  //关闭音效      
        GRoot.inst.soundVolume = 0.5f;  //调整全局声音大小 ,包括 按钮 和 动效
        //3.事件监听相关
        btn.onClick.Add(() =>
        {
            print("按钮被点击");
        });
        btn.FireClick(true, true);        //通过代码控制是否触发按钮
        btn.onClick.Call();     //触发按钮中监听的函数 但是没有点击效果

😶‍🌫️9.单选和复选按钮


在这里插入图片描述

  • 复选按钮
    在这里插入图片描述
  • 单选按钮

①需要添加一个控制器
在这里插入图片描述
②点击连接
在这里插入图片描述
③即可形成互斥效果的单选按钮
在这里插入图片描述


 UIConfig.buttonSound = (NAudioClip)UIPackage.GetItemAssetByURL("ui://Teach/btnMusic"); 
 //设置默认音效
 UIConfig.buttonSoundVolumeScale = 0.5f;
 GComponent view = UIPackage.CreateObject("包名", "组件名").asCom;
 GRoot.inst.AddChild(view);
 //1.获取单选和多选框
 GButton check = view.GetChild("按钮名").asButton;
 GButton radio = view.GetChild("按钮名").asButton;
 check.selected = true; //改变选中状态
 radio.selected = true; //改变选中状态
 Controller c = view.GetController("控制器名字"); //单选按钮来 建议通过获取控制器去切换选择状态
 c.selectedIndex = 1;

 //2.事件相关
 checkBox.onChanged.Add(() =>
 {
     print("状态现在为" + check.selected);
 });

😶‍🌫️10.进度条(本质:组件)


  • 原理:就是按进度改变一个元件的宽度、高度或填充比例
  • 自动创建
    在这里插入图片描述

在这里插入图片描述

  • 手动创建规则

在组件中按特定规则添加元件即可制作为进度条

组件中关键元件名内部规则:

  • bar:横向进度条改变宽度的元件。处于最大值时的宽度(可以是任意类型元件)
  • bar_v: 纵向进度条改变高度的元件。
  • title: 用于显示进度的标题,可以是装载器,标签,按钮
  • ani:如果进度条是序列帧动画,则0~100对应动画的帧索引

注意:设置bar的宽度为进度条,设置bar_v的高度为进度条处于最大值时的高度(可以是任意类型元件)

  • API相关:
    //1.设置默认音效
    UIConfig.buttonSound = (NAudioClip)UIPackage.GetItemAssetByURL("ui://包名/音效名");
    UIConfig.buttonSoundVolumeScale = 0.8f;
    GComponent view = UIPackage.CreateObject("包名", "组件名").asCom;
    GRoot.inst.AddChild(view);
    //2.获取进度条
    GProgressBar pb = view.GetChild("进度条名").asProgress;
    //3.改变进度
    pb.value = 30;
    pb.TweenValue(100, 3); //让进度3秒内缓慢的变到100 

😶‍🌫️11.滑动条(本质:组件)


  • 滑动条与进度条相似,滑动条只是增加了一个按钮

在这里插入图片描述
在这里插入图片描述

  • 组件中关键元件名规则:

     bar:横向滑动条改变宽度的元件。
     bar_v: 纵向滑动条改变高度的元件。        title: 用于显示进度的标题,可以是文本、装载器,标签,按钮
     grip:用于拖动的按钮
    

注意:
①设置bar_v的高度为滑动条处于最大值时的高度(可以是任意类型元件)
②grip按钮应该与bar对象建立一个关联,并放置在进度条处于最大值时的位置。这个关联是:
③正向:grip左左关联到bar或者顶顶关联到bar_v;
④反向:grip顶顶关联到bar或者底底关联到bar_v。

 //1.获取滑动条
 GSlider slider = view.GetChild("滑动条名").asSlider;
 //2.改变进度
 slider.value = 100;
 //3.事件
 slider.onChanged.Add(() =>
 {
     print(slider.value);
 });

😶‍🌫️12.滚动条(本质:组件)


  • 需要配合滚动容器使用,是可选控件

  • 自动创建
    在这里插入图片描述
    在这里插入图片描述

  • 手动创建

      组件中关键元件名规则
      arrow1(可选):垂直滚动条时,代表上侧的按钮
      arrow2(可选):垂直滚动条时,代表下侧的按钮
      grip:表示滚动条中间的滑块按钮
      bar:限制区域,作占位用途
    
  • 需要配合滚动容器使用,现在还不可使用
    在这里插入图片描述


😶‍🌫️13.滚动容器(本质:组件)


  • 组件的溢出处理设置为“ 滚动”,那么该组件就成为了滚动容器

在这里插入图片描述

  • 属性相关:
    滚动条显示:默认勾选
    边缘回弹效果:默认勾选
    触摸滚动效果:默认勾选

  • 页面模式:
    以视口大小为页面大小,每次滚动的距离是一页。一般在移动平台上使用,PC上较少,拖动滚动条进行滚动操作与这个模式冲突。

  • 浮动显示:
    勾选后,滚动条不占据视口的位置,而是直接覆盖在视口上面。例如一个适用于手机的滚动条,它是细条且半透明的,只在滚动时才显示出来,用于提示滚动位置。那么我们把它设置为“浮动”,这样就不会挤占视口的显示空间。

在这里插入图片描述

  • 简单效果

在这里插入图片描述

  • 相关API
        //1.获取滚动容器
        ScrollPane scrollPanel;
        GComponent scroll = view.GetChild("滚动条名").asCom;
        scrollPanel = scroll.scrollPane;
        //2.滚动位置设置
        scrollPanel.posY = 0;
        scrollPanel.SetPercY(0.5f, true);  //按百分比滚动
        print(scrollPanel.viewWidth); //视口宽高
        print(scrollPanel.viewHeight);
        print(scrollPanel.contentWidth); //内容宽高
        print(scrollPanel.contentHeight);
        scrollPanel.ScrollToView() //设置指定元件出现在视口内
        scrollPanel.touchEffect = true;//触摸功能开关
        //3.事件相关
        scrollPanel.onScroll.Add(() =>  //当滚动视图位置改变时 
        {});
        scrollPanel.onScrollEnd.Add(() =>  //惯性移动停止回调
        { });
        scrollPanel.onPullDownRelease.Add(() =>  //下拉刷新回调
        {  });
        scrollPanel.onPullUpRelease.Add(() =>     //上拉刷新回调
        {});

😶‍🌫️14.列表(本质:组件)


组件的一种特殊扩展
在组件的基础上加入排序相关的功能
在这里插入图片描述
相关属性

  • 渲染顺序拱形:自定义一个索引显示在最前面,两侧的依次渲染
  • 选择控制:
    可以和控制器联动,这样当列表选中项目发生改变时,控制器也同时跳转到相同索引的页面
  • 分页控制:
    可以绑定一个控制器。当列表发生翻页滚动时(溢出处理必须为三种滚动之一,滚动必须勾选为页面模式),控制器也同时跳转到相同索引(页码)的页面。反之亦然,如果控制器跳转到某个页面,那么列表也同时滚动到相同索引(页码)的页面。
  • 项目资源
    在这里插入图片描述
  • 编辑列表
    在这里插入图片描述
  • 自动调整列表项目大小(默认不勾选,勾选可能会拉伸图像)
    在这里插入图片描述
        //默认竖直滚动条
        UIConfig.verticalScrollBar = "ui://包名/列表名";
        GComponent view = UIPackage.CreateObject("包名", "组件名").asCom;
        GRoot.inst.AddChild(view);
        //1.获取列表
        GList list = view.GetChild("列表名").asList;
        //2.组件的 添加和移除
        GObject obj = list.AddChild(UIPackage.CreateObject("包名", "图片名"));
        list.RemoveChild(obj);//移除列表
        obj.Dispose();//销毁

        //从列表缓存池池中取出或新建对象添加到列表中
        
        GObject obj3 = list.AddItemFromPool()//池子里new 个对象
        list.RemoveChildToPool(obj3); //删除一个item,并将对象返回池中
        list.AddItemFromPool();     //现在池子里面有一个对象 会直接取出来        
        list.RemoveChildToPoolAt(0);//删除指定位置item,并返回池中
        list.RemoveChildrenToPool();//删除一个范围内的item,或者全部删除,返回池子
         list.RemoveChildrenToPool(0,50);  //移除指定索引位置的对象                   
         list.GetFromPool("url地址")//从池中取出对象,并不会添加到列表中
          ReturnToPool//将对象返回池中,并不会从列表中移除

        //3.使用回调函数修改列表
        list.itemRenderer = RenderListItem;
        list.numItems = 20; //自动创建20个对象,在委托函数中进行初始化操作       
        list.numItems = 10; //每次重新赋值 会留下10个对象 多余的对象 放入池子中
        list.numItems = 20;//如果在重新变成20 多出来的10个 是之前放入池子的10个      
       list.ResizeToFit(); //重置大小
        //4.事件相关
        list.onClickItem.Add((obj) =>
        {
            print((obj.data as GObject).text);
        });
    private void RenderListItem(int index, GObject obj)//作为回调函数
    {
        //初始化创建的每一个对象
        obj.text = index.ToString();
    }
}
  • 虚拟列表和循环列表

虚拟列表,节约性能,如要创建1000个显示物件,但是列表中只能显示20个,每次滑动时,只更新这20个物件,达到显示1000个的效果

虚拟列表使用的前提条件

    1.必须要定义itemRenderer
    2.必须要开启滚动相关
    3.一开始就要把项目资源设置好 或者 我们可以通过代码设置项目资源
list.defaultItem = "通过url地址去关联项目资源";
  • 开启虚拟列表
         list.SetVirtual();
  • 循环列表只支持 单行或者单列布局,不支持流动布局和分页布局

若列表循环20个,则滚动列表一直是重复这二十个物件

        list.SetVirtualAndLoop();
        list.numItems = 20;

😶‍🌫️15.下拉框(本质:组件)


  • 自动创建
    在这里插入图片描述
    在这里插入图片描述

  • 手动创建

1.弹出组件的构成:背景图(与list宽高关联)+垂直滚动列表(命名为list并关联好项目资源)
2.button 下拉框需要一个按钮控制器(下拉框点击展开时,保持在down页,收回时保持在up也或over页)
3.title 可以是普通文本、富文本、标签、按钮

在这里插入图片描述

  • 相关API
  //1.获取下拉框
  GComboBox comboBox = view.GetChild("下拉框的而名字").asComboBox;
  //2.代码初始化内容
  comboBox.items = new string[] { "选1", "选2" , "选3" , "选4" };
  comboBox.icons = new string[] { "ui://包名/图片1", "ui://包名/图片2", "ui://包名/图片3", "ui://包名/图片4" };
  comboBox.values = new string[] { "11", "22", "33", "44" };
  
  print(comboBox.selectedIndex);  //通过索引通过他就可以得到 内容 图标 值
  print(comboBox.value);  //值 快捷获取值
  comboBox.selectedIndex = 2;  //通过索引设置
  comboBox.value = "44";  //通过值设置
  GRoot.inst.HidePopup();//代码关闭弹出项
  //3.事件相关
  comboBox.onChanged.Add(() =>
  {
      print("下拉框改变了" + comboBox.selectedIndex + "_" + comboBox.items[comboBox.selectedIndex]);
  });
  

🪶(快捷键


  • 拖动视图:鼠标滚轮
  • 重命名组件:F2
  • 成组:ctrl + G

🅰️


⭐【Unityc#专题篇】之c#进阶篇】

⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇】

【Unityc#专题篇】—进阶章题单实践练习

⭐【Unityc#专题篇】—基础章题单实践练习

【Unityc#专题篇】—核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!


在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1711212.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

硬盘监控,保障硬盘性能

硬盘驱动器是个人计算机和服务器中用于存储数字数据的硬件部件,硬盘突然故障可能导致永久数据丢失,大多数硬盘驱动器使用自我监控、分析和报告技术(SMART)来跟踪各种性能指标并分析其自身的运行状况。然而,并不是所有的…

HackTheBox-Machines--Popcorn

文章目录 0x01 端口扫描0x02 测试思路2.1 80端口测试 0x03 /torrent 目录文件上传测试0x04 权限提升 Popcorn 测试过程 0x01 端口扫描 (base) gryphonwsdl ~ %nmap -sC -sV 10.129.138.22 Starting Nmap 7.94 ( https://nmap.org ) at 2024-05-28 14:22 CST Nmap scan report …

Linux shell编程学习笔记51: cat /proc/cpuinfo:查看CPU详细信息

0 前言 2024年的网络安全检查又开始了,对于使用基于Linux的国产电脑,我们可以编写一个脚本来收集系统的有关信息。对于中央处理器CPU比如,我们可以使用cat /proc/cpuinfo命令来收集中央处理器CPU的信息。 1. /proc/cpuinfo 保存了系统的cpu…

贵州大学24计算机考研数据速览,国家重点实验室22408复试线285分!贵州大学计算机考研考情分析!

贵州大学计算机科学与技术学院坐落在贵州大学北校区(贵阳花溪)。 学院现有教职工139人,其中专职教师126人,教授17人,副教授37人,讲师46人,高级实验师4人,实验师17人。具有博士学位的…

【易错题】数据可视化基础练习题(30道选择题)#CDA Level 1

本文整理了数据可视化基础知识相关的练习题,共30道,适用于想巩固数据可视化知识的同学,也可作为备考CDA一级的补充习题。来源:如荷学数据科学题库(技术专项-可视化)。 1) 2) 3&…

通义千问图像识别功能的23个实用案例

●给出穿搭建议 这位女士佩戴的是一款精致的长款耳坠,设计上融合了复古和现代元素。为了更好地搭配这款耳环,以下是一些建议: 服装风格:由于耳环本身具有一定的华丽感,建议选择简约而优雅的服装来平衡整体造型。可以选…

栈和队列专题(LeetCode)

目录 有效的括号题解代码加解释 用队列实现栈题解代码加解释 设计循环队列题解代码加解释 用栈实现队列题解代码加解释 有效的括号 题解 左括号从s字符串中取出来放入栈中 s中就只有右括号了 那么栈顶的左括号和s的右括号匹配即可 代码中也详细解释了左括号和右括号多少的问题…

如何成为快手外卖代理?本地生活服务平台加盟条件解析

近年来,以抖音、快手和小红书等为代表的互联网大厂纷纷进军本地生活领域,改变美团和饿了么二分天下的这一局面的同时,也让本地生活成为了众多创业者眼中的“香饽饽”。其中,快手凭借着其庞大的用户群体,让快手团购外卖…

关于本人VIP付费文章说明

郑重声明:我写博客只是为了记录分享经验 自从上次写完数据结构系列后我就一直没有登陆,目前也没打算继续开新内容。今天偶然发现我之前写的文章被设为vip文章,要vip解锁才能看,我很确定当初我发布的时候选择的是公开,…

LeetCode 474.一和零

没做出来,最后看了解析,看了半天才懂。 我一开始把这个题当成多重背包来做了,因为有0和1两个参数需要考虑,但是中间很多情况不知道怎么处理。后面看了解析才知道这是个01背包问题,0和1都是一个物品上的属性&#xff0c…

HTML静态网页成品作业(HTML+CSS)——游戏阴阳师介绍网页(4个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有4个页面。 二、作品演示 三、代…

RDP方式连接服务器上传文件方法

随笔 目录 1. RDP 连接服务器 2. 为避免rdp 访问界面文字不清晰 3. 本地上传文件到服务器 1. RDP 连接服务器 # mstsc 连接服务器step1: 输入mstscstep2: 输入 IP, username, passwd 2. 为避免rdp 访问界面文字不清晰 解决方法: 3. 本地上传文件到服务器 step…

《KAN》论文笔记

原文出处 KAN: Kolmogorov–Arnold Networks (arxiv.org)https://arxiv.org/html/2404.19756v1 论文笔记 What 《KAN: Kolmogorov–Arnold Networks》——我们提出了 KolmogorovArnold Networks (KANs) 作为多层感知器 (MLP) 的有前途的替代方案。 我们表明,这…

小程序自动化辅助渗透脚本(2024)

简介 1.还在一个个反编译小程序吗? 2.还在自己一个个注入hook吗? 3.还在一个个查看找接口、查找泄露吗? 现在有自动化辅助渗透脚本了,自动化辅助反编译、自动化注入hook、自动化查看泄露 注:本工具仅用于学习交流&…

数据库系统概论(个人笔记)(第三部分)

数据库系统概论(个人笔记) 文章目录 数据库系统概论(个人笔记)3、SQL介绍3.1 SQL查询语言概述3.2 SQL数据定义3.3 SQL查询的基本查询结构3.4 其他基本操作3.5 设置操作3.6 空值3.7 聚合函数3.8 嵌套子查询3.9 数据库的修改 3、SQL…

VSCODE常用插件记录

重点提名: back & ForthBookmarksC/ChighlightSSH FS //SSH插件

SQL2017附加从其他电脑复制过来的mdf数据后出现【只读】无法写入数据

1. 尝试给它所在的文件夹的属性中的“只读”去勾,无果。 2. 其他文章提示是文件的问题。 该错误为文件权限错误,找到该数据库的 数据库文件 和 日志文件,在安全中添加 Authenticated Users 用户的权限,并设置 “完全控制”

Linux:进程控制(二.详细讲解进程程序替换)

上次讲了:Linux:进程地址空间、进程控制(一.进程创建、进程终止、进程等待) 文章目录 1.进程程序替换1.1概念1.2原理1.3使用一个exec 系列函数execl()函数结论与细节 2.多进程时的程序替换3.其他几个exec系…

【链表】Leetcode 82. 删除排序链表中的重复元素 II【中等】

删除排序链表中的重复元素 II 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 示例 1: 输入:head [1,2,3,3,4,4,5] 输出:[1,2,5] 解题思路 由于链表…

【小呆的力学笔记】连续介质力学的知识点回顾一:运动和变形

文章目录 1. 运动的描述2. 拉格朗日描述下的变形2.1 线元的变化2.2 体元的变化2.3 面元的变化 1. 运动的描述 在连续介质力学中,存在着两种对运动的描述,一种为拉格朗日描述,即通过描述每个物质点的运动来描述整个变形体的运动,也…