[unity] ugui学习笔记 | 乐文库-ag九游会登录j9入口
目录 1.text (文字)1.1 属性1.2 通过脚本设置text的属性 2. image(图片)2.1 属性2.2 注意:图片导入 3.button(按钮)3.1 属性3.2 使用时 4. toggle4.1 toggle与button的不同4.2 onchangevalue属性4.3 ison属性4.4 toggle group 5.dropdown (下拉菜单)5.1 绑定监听事件 7.inputfiled (输入组件)7.1 属性7.2 示例 8.raw image (未加工图片)8.1 显示图片8.2 搭配相机显示相机画面8.3 播放视频 9.canvas(画布)9.1 canvas: render mode属性9.2 canvas scaler: 画布缩放模式 10.scroll view (滚动视图)10.1 movement type: 运动类型10.2 visibility: 能见度10.3 mask: 掩饰 11.slider (滑动器)12.scrollbar (滚动条)12.1 number of steps属性 1.text (文字)
用来像是文字并对其进行处理,最常用。
1.1 属性 1.2 通过脚本设置text的属性
using unityengine;using unityengine.ui;public class text : monobehaviour{ public text testtext; //定义一个text组件 void start() { testtext.fontsize = 88; //设置字体大小为88 testtext.fontstyle = fontstyle.normal; //字体样式为普通 testtext.color = color.blue; //字体颜色为蓝色 }}
2. image(图片)
用来控制或显示图片,最常用。
2.1 属性 2.2 注意:图片导入 为了在 image 组件上使用我们想要的图片,我们需要将纹理类型改为:sprite/精灵,才可正常使用。选中导入后的图片,在 inspector 面板上可以进行设置点击 texture type 将其设置为 sprite(2d and ui) 然后点击 apply 应用 3.button(按钮)
通过点击按钮,执行某件事情,动作等等操作。
3.1 属性 3.2 使用时
使用时可以添加监听函数,来监听按钮事件,当检测到按钮的时间被执行后,则通过函数调用做出响应。
动态监听函数
1 先获取到 目标对象的button 组件2 通过.onclick.addlistener(函数) 的方式进行动态添加3 如函数具有参数,可通过lambda表达式.onclick.addlistener(lambda表达式) 动态添加4 如函数具有参数,可通过委托.onclick.addlistener(delegate {函数;}) 动态添加
private button testbtn; void start() { gameobject.find("button").getcomponent(); testbtn.onclick.addlistener(onclicktest); testbtn.onclick.addlistener(() => onclick_parameter("lambda 表达式")); testbtn.onclick.addlistener(delegate { onclick_parameter("delegate 委托"); }); } /// /// 点击函数:带形参 /// public void onclick_parameter(string arg) { print(arg); } /// /// 点击函数:无参 /// public void onclicktest() { print("onclicktest"); }
4. toggle
项目中,经常会用到按钮,模拟或控制开关,如果使用button,那么开发者就需要自己写判断逻辑,告诉计算机这个按钮的状态。 toggle解决了上述问题,动态的模拟了开关按钮。
4.1 toggle与button的不同 1 graphic :用来控制 toggle 开关图片的显示/隐藏2 ison :用来表示 toggle 开关状态3 group :用来表示 toggle 所属开关组/群(后边会讲到) 4.2 onchangevalue属性
将需要调用的方法添加至onchangevalue中时,和button相同,每次点击都会调用。
动态监听
using unityengine;using unityengine.ui;/// /// chinar专用测试类/// public class demo : monobehaviour{ void start() { //找到组件,动态添加,lambda表达式,精简! //与手动添加效果一致 gameobject.find("toggle").getcomponent().onvaluechanged.addlistener(ison => print("调用")); }}
4.3 ison属性
ison 默认状态,就是运行后 开关按钮(toggle)的默认状态
监听ison状态
// 手动public class demo : monobehaviour{ // 监听方法:可手动/动态绑定 public void onclick(bool ison) { if (ison) { print("开"); } else { print("关"); } }}// 动态监听public class chinardemo : monobehaviour{ // 监听方法:可手动/动态绑定 // public void onclick(bool ison) { if (ison) { print("开"); } else { print("关"); } }}
4.4 toggle group
在项目开发时,有时需要单选按钮 / 多个按钮,但仅保证一个开启。此时,如果用 button 实现的话,随着按钮数量的增加,逻辑的复杂性将不断增大。unity 给我们提供了一个非常方便的组件 toggle group,使多个 toggle 依赖它可以极其便利的实现一些需求,例如,单选 / 换页 / 切换背包商城页面,等功能…
使用步骤
1 创建多个开关 2 添加开关组: 创建一个空物体,并添加一个toggle group组件(此时的空物体就相当于一个组),将所有开关设为其子物体(不设置亦可实现功能,是为了规范!),并将所有开关组件中的group 属性,设为空物体组toggle group 3 开关组中组件的关系 toggle group 组件所管控与其关联的所有子开关,当我们按下其中一个开关,其余的都会关闭
5.dropdown (下拉菜单) 5.1 绑定监听事件
vlaue属性:代表选择了列表中的第几项,默认为0,则默认选中第一项,写对应脚本时,也是通过这个value值进行区分选择的具体菜单项。
using unityengine;using unityengine.ui;/// /// chinar例子脚本,用以输出/// public class demo : monobehaviour{ void start() { //如果通过代码添加监听事件,外部就无需再做添加 //gameobject.find("dropdown").getcomponent().onvaluechanged.addlistener(consoleresult); } /// /// 输出结果 —— 添加监听事件时要注意,需要绑定动态方法 /// public void consoleresult(int value) { //这里用 if else if也可,看自己喜欢 //分别对应:第一项、第二项....以此类推 switch (value) { case 0: print("第1页"); break; case 1: print("第2页"); break; case 2: print("第3页"); break; case 3: print("第4页"); break; //如果只设置的了4项,而代码中有第五个,是永远调用不到的 //需要对应在 dropdown组件中的 options属性 中增加选择项即可 case 4: print("第5页"); break; } }}
注意事项
如何解决 重复点击菜单项,可以重复调用响应函数。看这个文章: 重写 dropdown 扩展
7.inputfiled (输入组件)
用来管理输入的组件,用户的账户、密码、或者聊天时输入的文字等。
7.1 属性 7.2 示例
using unityengine;using unityengine.ui;public class inputfield : monobehaviour{ public inputfield account;//账号输入框 public inputfield password;//密码输入框 // 初始化输入框 void start() { account = gameobject.find("account").getcomponent(); password = gameobject.find("password").getcomponent(); } // 绑定到登录按钮上 public void login() { print("账号:" account.text " 密码:" password.text); }}
8.raw image (未加工图片)
该组件用于显示纹理贴图,常与render texture结合使用,可以搭配相机使用,用来播放视频以及显示相机画面。
8.1 显示图片
raw image的属性窗口中texture属性为显示图片的引用,将导入的图片直接拖拽放入该属性,即可显示图片。
8.2 搭配相机显示相机画面
该操作需要搭配render texture渲染纹理来进行使用,将该组件分别添加引用至想要显示图像范围的相机与raw image组件中。
效果
8.3 播放视频 创建raw image对象,创建render texture对raw image对象添加video player组件导入视频并添加至组件相应位置将render texture添加到raw image和video player组件 9.canvas(画布)
所有的ui组件都是canvas的子集,并且所有组件都要放入到canvas中,否则不能正常显示。
9.1 canvas: render mode属性 screen space – overlay: 屏幕空间覆盖模式 画布下的所有ui永远位于屏幕之前,屏蔽相机渲染场景显示的元素screen space – camera: 相机模式 该模式canvas和相机有一定的距离,可以在相机和canvas之间放置一些模型或粒子特效world space: 世界模式 canvas和普通的3d物体一样,可以控制大小、旋转、缩放等。 9.2 canvas scaler: 画布缩放模式 constant pixer size: 恒定像素 该模式下的ui以像素为大小,同样的像素在不同的分辨率下尺寸不同。scale with screen size: 屏幕尺寸比例 该模式下ui元素的位置与大小按当前屏幕分辨率和设置的分辨率去相对值。若当先屏幕分辨率大于小于设置屏幕分辨率,则canvas按照屏幕分辨率来布局,然后放大缩小来适应屏幕,会导致ui被不均匀的拉伸或缩小,导致界面混乱。constant physical size: 恒定尺寸 该模式中ui以像素为大小,在不同的分辨率下尺寸不同 10.scroll view (滚动视图)
当有大量元素需要显示时,那么固定的一篇区域一定无法全部显示,所以就需要一个可以滚动的区域进行展示。
10.1 movement type: 运动类型 unresticted: 拖动结束后松开滚动条,则它会根据惯性一直做减速运动,直到速度为0elastic: 拖动结束松开滚动条后,他会根据弹性变量进行回弹clamped: 拖动结束松开滚动条后,如果触碰到最上面或者最下面时,不会有任何动作。 10.2 visibility: 能见度 permanent: 永久显示,滚动条将会一直显示auto hide: 自动隐藏,只有在content不超出viewport的范围的情况下才会隐藏auto hide and expand viewport: 自动隐藏,并扩展窗口 10.3 mask: 掩饰
无论在content中添加多少张图片,超出viewport的部分都会被隐藏掉,其组件就是mask,挂载在viewport对象中。
11.slider (滑动器)
是一个滑动条组件,可用来显示进度,也可当作进度条。只需要隐藏起handle组件,再修改其样式或添加文本,就可以达到进度条的效果。
using system.collections;using system.collections.generic;using unityengine;using unityengine.ui;public class slidercontroller : monobehaviour{ private slider slider; private text text; // start is called before the first frame update void start() { slider = gameobject.find("slider").getcomponent(); text = slider.transform.find("text").getcomponent(); slider.value = 0; text.text = " "; } // update is called once per frame void update() { if (slider.value < 100) { slider.value = time.deltatime; text.text = (slider.value / 0.1).tostring("f") "%"; } }}
12.scrollbar (滚动条)
滚动条组件,类似于视频播放器或者音乐播放器中,当前的播放进度。
12.1 number of steps属性
number of steps属性 当该值为1时,则代表滑块可以在该滚动条中任意位置,如果该值不为1,那么滑块移动时,就按照百分比的方式移动。 如果值为2,那么每次移动距离 2/100=1/50,每次移动1/50的长度。如果值为3,每次移动距离3/100=1/33,每次移动1/33的长度。
本文来自网络,不代表乐文库立场,如若转载,请注明出处:https://www.lewenku.com/?p=450190