Unity3D学习笔记——NGUI之UIToggle
NGUI笔记

NGUI笔记1-2、先创建UI ROOT3、-Label 受限于Widget->size的大小-Font NGUI类型字体选择NUGI里的字体,可以用FontMaker 创建Unity类型字体(用于选择动态字体)还可以从系统里拷贝一些字体(C:\Windows\Fonts)-Overflow ShrinkContent标签空间自动适应,压缩字体显示ClampContent按照字体的大小显示,超出标签框的不显示ResizeFreely横向使标签空间适应字体空间,此时不能随意控制标签框大小ResizeHeight纵向使标签适应字体空间,根据字数改变标签框高度,此时只能随意调节标签框长度-Alignment 对齐方式左、中、右、Justified 注:Justified:自动对英文扩展适应标签框,中文无效-Gradient 设置字体渐变颜色-Effect Shadow字体加阴影 OutLine字体加边框凸显4、-Sprite UISprite-Type-Sliced: 九宫切图使被拉伸的图片边角不会模糊-Tiled: 平铺使精灵里的图案均匀分布,铺满图片,适用于精灵里由各种图案组成-Flip:按照水平或垂直翻转or both5、-Panel-Alpha 控制Panel的透明度 Panel上所有组件都会受影响-Clipping-SoftClip控制Panel上内容的显示6、-Button-添加碰撞体-添加脚本UIButton-Notify 选择一个物体,指定这个物体上所有脚本中的某个方法-标签按钮、图片按钮、图片标签按钮(在图片上加碰撞体、UIButton 若要图片和标签同时相应需再添加一个UIButton/ButtonScale,并将此上的Tween Target改为标签)7、-图集由于图片单个使用会浪费性能,故将所有图片做为图集在UI里创建一个Sprite,精灵默认的图集就属于新创建的图集-UIButton脚本下-Sprites属性(Hover:鼠标划过的状态图片)这些图片要属于同一个图集-再次open Atlas给图集添加、更新或删除图片8、-Sliced 九宫切图UISprite Sliced 使被拉伸的图片边角不会模糊-Type :Sliced(修改图片的边框) 点击Edit编辑边框修改Border 值,这样仅会拉伸边框范围之内的图片可以在拉伸按钮时设置Sliced使按钮的四个角不会被拉伸,一般带有边角的图片需要当图片出现虚边时可以微调Dimensions9、-NGUI制作字体集静态字体:所用的汉字已经写在一张图片上,一张图片集合,使用图片去使用所需要的字体动态字体Font Maker-Bitmap静态字体会在某个图集里生成-Dynamic动态字体在设置过程中可以设置加粗、倾斜动态字体不会在图集里生成,使用动态字体会稍微影响性能10、-Widget及其常用属性-Pivot是中心点,做坐标的原点分水平(左中右)和垂直方向(上中下)-Depth 控制显示的优先级-Snap 让图片恢复原来的大小-Aspect 宽度与高度之比 Based On Width:只能通过宽度修改高度不能修改11、-Achor(重要) 设置物体的上下边框距离另一个控件的相对位置,使之不变方便实现控件的自适应可以设置一个锚点目标,之后相对这个锚点可以保持不变如使背景图片与相机的大小保持一致Type默认是none 设为Unified 统一的 Advanced当Unified无法满足条件时使用,可以使用4个不同的物体为Achor-Execute On Enable设置之后就不会变 OnUpdate随更新而变化-Left Right Bottom Top(物体上下左右边框)-Target's Center设定的一边是以锚点目标Center为Achor,物体到中心点的距离不变-Target's Left 物体与锚点目标左边框间距离保持不变,这样一来场景一旦改变其他边会伸缩,图片变形可控制物体到锚点目标的距离不变使物体处在与相机的相对位置(如游戏中地图的位置)(物体默认是与坐标原点保持不变的)-使UI边框的边角为原点来实现自适应12、Tween 补间动画-Toween Alpha 透明度的变化Tweener-Play Style once,Loop(0->1 0->1),Ping Pong(0->1 1->0 看起来较缓和)-Animation Curve 变化曲线,可手动改-Duration 动画时间-Start Delay 延迟播放-Ignore TimeScale 默认勾选游戏可通过TimeScale控制游戏暂停或达到游戏满动作的效果。
Unity3D学习笔记——NGUI之UIScrollView

前言:有的时候Panel会被截取,里面的内容就不能显示完整,所以需要为其添加 scroll view组件。
该文章出自【狗刨学习网】一:将Panel放进一个scroll view只需要简单的3步:1.首先在UI Root下创建三个Sprite并为其设置不同的贴图。
2.在UI Root下创建一个panel,然后在Scene界面中的panel上右键鼠标,在弹出的菜单中选择Attach -> Scroll View。
3.然后在Hierarchy中将创建的三个Sprite拖动到panel下。
3.通过拖动紫色按钮,即可改变scroll view的大小。
3.最后一步,添加拖动脚本。
添加拖动脚本之前,需要为控件添加一个随意的碰撞脚本,因为没有碰撞事件,是无法使用拖动脚本的。
可以为panel添加这个两个脚本,或是为panel里的每个item添加这个两个脚本:这里选择的是为每个item添加这两个脚本:右键Sprite对象 Attach——>Box Collier:右键Sprite对象 Attach——>Drag Scroll View拖动脚本:最后效果图如下:二:提示1.如果panel中有多个item时,想要将拖动事件添加到item上,必须为每一个item添加碰撞脚本和拖动脚本。
2.如果为panel添加碰撞组件和拖动组件的时候,一定要调节碰撞组件的大小,否则点击可能没有效果。
3.为panel或是item添加Drag Scroll View组件的时候,可以在Scene 中右键然后Attach -> Drag Scroll View即可。
4.UIPanel中有一个属性是Cliping,这个属性值建议选择Soft Clip这个功能还是很强大的,在显示范围之外的item将不显示,算是节省的内存资源吧。
三:Scroll View属性分析1.Content Origin:控制panle相对Scroll View的位置。
【Unity3DNGUI】----UI尺寸和位置的调整

【Unity3DNGUI】----UI尺⼨和位置的调整1 尺⼨与位置通过UIWidget类获取,该类是所有UI元素的基类在unity中创建⼀个sprite,如下图所⽰这⾥⾯这个sprite的⼤⼩受⼏个属性的影响,⾸先是属性⾯板⾥的Size,对应的UIWidget成员为width和height字段,然后是其上层节点和⾃⾝scale属性。
1.1 局部⼤⼩public override Vector3[] worldCorners{get{Vector2 offset = pivotOffset;float x0 = -offset.x * mWidth;float y0 = -offset.y * mHeight;float x1 = x0 + mWidth;float y1 = y0 + mHeight;Transform wt = cachedTransform;mCorners[0] = wt.TransformPoint(x0, y0, 0f);mCorners[1] = wt.TransformPoint(x0, y1, 0f);mCorners[2] = wt.TransformPoint(x1, y1, 0f);mCorners[3] = wt.TransformPoint(x1, y0, 0f);return mCorners;}}从上⾯可以看出局部⾓点对应的矩形宽和长就等于width和height(mWidth等于width)1.2 世界坐标系⼤⼩所以计算某个UI元素在屏幕上的真实⼤⼩应该为public override Vector3[] worldCorners{get{Vector2 offset = pivotOffset;float x0 = -offset.x * mWidth;float y0 = -offset.y * mHeight;float x1 = x0 + mWidth;float y1 = y0 + mHeight;Transform wt = cachedTransform;mCorners[0] = wt.TransformPoint(x0, y0, 0f);mCorners[1] = wt.TransformPoint(x0, y1, 0f);mCorners[2] = wt.TransformPoint(x1, y1, 0f);mCorners[3] = wt.TransformPoint(x1, y0, 0f);return mCorners;}}从⾥⾯取两个四个⾓点之间的距离即可算出真实的⼤⼩(因为Transform类获取不到derived scale属性,只能获取到localScale属性)上⾯代码中也⽤到了pivotOffset,该属性对应于在编辑器选中UI元素局部坐标系的原点,默认的情况下该值是(0.5,0.5),表⽰在UIWidget中的中⼼,为(0,0)表⽰在左下⾓,(1,1)表⽰在右上⾓。
Unity3dNGUI的使用(九)(UIScrollView制作滑动列表)

Unity3dNGUI的使⽤(九)(UIScrollView制作滑动列表)UIScrollView制作滑动列表,可横向,竖直展⽰⼀些列表在固定可视范围内UIScrollVIew只是⼀个可滑动的UI组件如果需要制作复杂的可视区域UI需要配合使⽤UIPanel与UIGrid这样更⽅便UI的展⽰a.创建⼀个2D UI Root,在NGUI菜单上创建⼀个Scroll Viewb.在ScrollView上默认的为我们添加了⼀个UIPanel与UIScrollViewAlpha:⾯板的透明度Depth:⾯板在所有UI上的层次等级Clipping:⾯板剪切,分为None(⽆剪切效果),Soft Clip(软剪切,有边缘模糊效果),Alpha Clip(硬剪切,边缘锋利)Constrain But Don't Clip(显⽰所有内容,但是是剪切区域存在)Advanced Options:⾼级选项Render Q:⾯板⾥所有图⽚的渲染质量,Automatic(⾃动适应),Normal(正常),Explicit(⽤户指定)Normals:法线贴图Cull:如果⽤⿏标⼿动组件则剔除组件Visible:⾯板是否在可视范围内Offset:通过位置偏离锚点Static:如果是没移动的组件,也进⾏代码检测,⼀般是⽤于ScrollViewPanel Tool:是否显⽰⾯板⼯具Show Draw Calls:显⽰渲染的详细信息Content Origin:滚动内容的起始点位置Movement:移动⽅向Drag Effect:内容拖动时候显⽰的效果Scroll Wheel Factor:使⽤⿏标进⾏滚动时,滚动时候的⽐例Momentum Amount:快速滑动时产⽣的冲⼒Restrict Within Panel:在⾯板⾥进⾏约束Cancel Drag if Fits:如果有组件适应了⾯板的⼤⼩,取消组件在⾯板⾥的拖动Smooth Drag Start:平滑拖动Drag Emulation:在苹果上仿真滑动效果Scroll Bars:在进⾏拖动时,可以加⼊⼀个Scroll Bars来控制或者显⽰进度c.在NGUI菜单上添加⼀个Grid到ScrollView组下d.设置UIGridArrangement:表格的显⽰⽅向Sorting:对表格内的内容进⾏排序,Alphabetic(以字母顺序排序),Horizontal(⽔平⽅向进⾏排序),Vettical(垂直⽅向进⾏排序),Custom(⾃定义的排序)Max Per Line:表格每⾏显⽰多少个元素Cell Widht:单个显⽰的宽度Cell Height:单个显⽰的⾼度Animate Smoothly:使⽤平滑动画过度效果Keep Within Panel:保持在⼀个⾯板⾥显⽰e.添加⼀些元素到UIGrid组下,并设置好位置,配合UIPanel的Soft Clip可以让元素在⼀定的可范围内显⽰这样⼀个简单的列表显⽰效果就做出来了:)。
Unity3D之UGUI学习笔记(二):RectTransform与Anchor

Unity3D之UGUI学习笔记(⼆):RectTransform与AnchorRect Transform我们都知道,Unity3D中所有的GameObject都必须要携带⼀个Transform组件,且该组件⽆法移除,那么作为UI显⽰的GameObject则不是携带Transform⽽是使⽤Unity3D专门为UI组件设计的Rect Transform组件,如下:另外说⼀下,Canvas Renderer也是UI组件必须携带的组件。
我们来看⼀下其为我们提供的功能:位置位置是以像素为单位,其具体的值则以锚点为准,表⽰和锚点距离,其中x轴从左到右的数值越来越⼤,y轴从下到上的数值越来越⼤,其中的Pos Z和Transform中的position.z效果⼀致,但不是使⽤该值来表⽰UI的深度。
保留该值估计是为了在3D UI的⼀些效果实现上的考虑。
尺⼨不同于缩放,这两个值设置了UI的尺⼨,为负并不会翻转UI⽽是直接不显⽰。
上⾯的两个按钮,上⽅的按钮是设置width为320,下⽅则是将width为160的按钮的scale x设置为2。
旋转效果同Transform,⼀般配合Tween使⽤。
缩放效果同Transform,⼀般配合Tween使⽤。
深度不通过NGUI的深度,在UGUI中的深度完全使⽤树形结构来表⽰,同⼀层级⾥位于下⽅的节点会覆盖掉位于上⽅的节点,如下:修改⼀下树形显⽰列表后如下:AnchorRect Transform除了上⾯提到的功能外,还提供了描点功能,该功能主要实现相对布局的功能。
同时我们还可以⾮常直观的配置描点:锚点描述的是当前UI的⽗对象的位置信息。
⽽锚点则表⽰当前对象坐标的(0, 0)点。
⾮stretch我们可以发现有Left、Center、Right、Top、Middle及Bottom六个设置项,这6个项⽬可以组合出9种形式的锚点,分别对应了当前UI⽗对象的9个⽅向的位置,这样⽅便我们的UI做相对位置的调整,⽐如当UI的坐标为(0, 0),选择CenterMiddle则当前UI为居中状态,⽽选择TopLeft则UI会位于⽗对象的左上⾓。
Unity3d NGUI控件知识

一、Panel更多精彩请关注:【狗刨学习网】1、Alpha属性影响所有在panel下面的widget。
所以可以用它来淡出整个窗口2、如果你的UI需要被灯光影响,需要勾选上Normals。
3、没有panel所有东西都不能够被渲染出来。
如果你对Unity熟悉,你可以把UIPanel当做Renderer4、Panel会根据dimensions自动Clip所有它的子节点。
使用这个功能需要选择Clipping 下拉列表中的任意选项,之后调整Scene View中紫色矩形的尺寸,就像调整widget的尺寸一样。
通过这样做你可以把一个panel放到Scroll View中,让他轻松的拖拽。
5、一个动力学Rigidbody会自动增加到你的panel上,因为对于Unity来说这样会提升性能。
移动静态的collider会有很多消耗性能的操作,但是移动rigidbody就不会。
二、Camera1、UICamera真正做的事情是发送NGUI事件给所有被当前camera渲染的object,camera 是UICamera脚本所在的那个。
其实这个脚本做的事情和UI无关。
事实上如果你想让游戏里面的object接收OnPress、OnClick、OnDrag等这类事件,你需要把UICamera挂在你的主相机上2、UICamera的选项Event Type用来决定脚本如何排序mouse或者touch触发的事件。
如果是UI模式,这些事件顺序基于widget的depth——和渲染顺序一样。
如果UICamera挂到了Main Camera上,那么就需要把这个选项修改成World模式。
这样就会根据与相机的距离来排序点击到的object。
3、Event Mask用来决定哪些层会接收事件。
大多数情况下你需要的就是“Everything”,这个值会与UnityEngine.Camera's Culling Mask进行逻辑与运算,有需要的话你可以微调这个值。
【深圳龙图教育】Unity3D中GUI简单介绍

【深圳龙图教育】Unity3D中GUI简单介绍GUI在游戏的开发中占有重要的地位,游戏的GUI是否友好,使用是否方便,很大程度上决定了玩家的游戏体验。
Unity内置了一套完整地GUI系统,提供了从布局、控件到皮肤的一整套GUI解决方案,可以做出各种风格和样式的GUI界面。
在Unity中使用GUI来完成GUI的绘制工作,目前Unity没有提供内置的GUI可视化编辑器,因此GUI界面的制作需要全部通过编写脚本代码来实现,如果游戏有比较多的界面制作需求,可以通过编写编辑器脚本来制作适合自身需求的GUI编辑器,或者借助第三方的GUI插件,如NGUI。
Unity的GUI类提供了丰富的界面控件,可以将这些控件配合使用,GUI控件,如下图:标题GUI代码需要在OnGUI函数中调用才能绘制,GUI的控件一般都需要传人Rect参数来指定屏幕绘制区域,例如Rect(0,10,200,300),对应的屏幕矩形区域左上角的坐标为(0,10),宽度为200,高度为300,在Unity GUI中,屏幕坐标系以左上角为原点接下来我们看Label控件,Label控件适合用来显示文本信息或者图片,我们新建一个c#脚本,叫做TestGUI.cs,然后绑定到我们的Main Camera对象上,Label初始化代码如下:1.void OnGUI()2. {3. //GUI.color = Color.red;4.5. bel(new Rect (10, 10, 100, 200), "Hello World!");6.7. bel (new Rect (100, 100, texture.width/4, texture.height/4), texture);8. }我们定于了两个label,一个显示文字,另一个显示了一张图片,如下图:标题Box控件,Box控件用来绘制带有边框背景的文字或图片,代码如下:1.void OnGUI()2. {3. //GUI.color = Color.red;4.5. //bel(new Rect (10, 10, 100, 200), "Hello World!");6.7. //bel (new Rect (100, 100, texture.width/4, texture.height/4), texture);8.9. GUI.Box (new Rect (10, 10, Screen.width * 0.5f, Screen.height * 0.5f), "This is a title");10.11. GUI.Box (new Rect (150, 170, texture.width/4, texture.height/4), texture);12.13.14. }效果如下:标题Button控件,Button控件用来绘制响应单击事件的按钮,代码如下:1.GUI.Button (new Rect (10, 10, 150, 50), "这是一个文字按钮");2.//图片按钮3.GUI.Button (new Rect (150, 100, texture.width/4, texture.height/4), texture);效果如下图:标题绘制一个文字图片的按钮,代码如下:1.//绘制一个带图片和文字按钮2. GUIContent guic = new GUIContent("按钮", texture);3. GUI.Button(new Rect(10, 70, 150, 30), guic);标题我们可以设置按钮的点击事件,代码如下:1.GUI.Button (new Rect (10, 10, 150, 50), "这是一个文字按钮");2.//图片按钮3.if(GUI.Button (new Rect (150, 100, texture.width/4, texture.height/4), texture))4.{5. Debug.Log("--------aaa");6.7.8.}9.10.//绘制一个带图片和文字按钮11. GUIContent guic = new GUIContent("按钮", texture);12. GUI.Button(new Rect(10, 70, 150, 30), guic);当我们点击了按钮,就会在控制台输出打印的内容,TextField控件,在游戏中,经常需要用到信息输入的窗口,比如聊天窗、用户信息的输入等;PasswordField控件用于绘制密码输入框,经常用于用户登录界面中;TextArea控件与TextField的用法类似,区别就是TextField是单行的,TextArea可以编辑多行的文字,创建的代码如下:ing UnityEngine;ing System.Collections;3.4.public class TestGUI : MonoBehaviour {5.6.7.public Texture2D texture;8.9.public string userName;10.public string password;11.12.public bool isSuccess;13. // Use this for initialization14.void Start ()15. {16. userName = "admin";17. password="123";18. }19.20. // Update is called once per frame21.void Update () {22.23. }24.25.26.void OnGUI()27. {28. //GUI.color = Color.red;29.30. //bel(new Rect (10, 10, 100, 200), "Hello World!");31.32. //bel (new Rect (100, 100, texture.width/4, texture.height/4), texture);33.34. //GUI.Box (new Rect (10, 10, Screen.width * 0.5f, Screen.height * 0.5f), "This is a title");35.36. //GUI.Box (new Rect (150, 170, texture.width/4, texture.height/4), texture);37.// GUI.Button (new Rect (10, 10, 150, 50), "这是一个文字按钮");38.// //图片按钮39.// if(GUI.Button (new Rect (150, 100, texture.width/4, texture.height/4), texture))40.// {41.// Debug.Log("--------aaa");42.// }43.//44.// //绘制一个带图片和文字按钮45.// GUIContent guic = new GUIContent("按钮", texture);46.// GUI.Button(new Rect(10, 70, 150, 30), guic);47.48.49. userName=GUI.TextField (new Rect (10, 10, 150, 30), userName);50.51. //'*'密码字符串的掩码字符52. password=GUI.PasswordField (new Rect (10, 50, 150, 30), password, '*', 25);53.54. GUI.TextArea(new Rect(10, 100, 150, 50),"abcderfasdasdasdasfasdaasdfdfsfsd");55.56.57.if (GUI.Button (new Rect (Screen.width / 2 - 50, Screen.height / 2 - 50, 100, 100), "登录"))58. {59.60. //判断登录61.if (userName.Equals("admin") && password.Equals("123"))62. {63. isSuccess=true;64. }65.else66. {67. isSuccess=false;68. }69.70. }71.72.if (isSuccess)73. {74. bel(new Rect(10, 200, 100, 30), "登录成功!");75. } else76. {77. bel(new Rect(10, 200, 100, 30), "登录失败!");78. }79.}80.81.82.83.}效果如下:标题Toggle控件可以用于制作开关按钮,每次单击,它都会在开和关的状态之间切换,创建代码如下:1.//文字2.toggleTxt = GUI.Toggle (new Rect (10, 10, 100, 30), toggleTxt, "A Toggle text");3.//图片4.toggleImg = GUI.Toggle (new Rect (10, 50, 50, 50), toggleImg, texture);效果如下图:标题ToolBar控件适用于绘制一组按钮,在这些按钮中同时只激活一个,可以用来制作工具栏,创建代码如下:1.public int toolbarInt;2.3.toolbarInt=GUI.Toolbar(new Rect(10,10,250,30),toolbarInt,new string[]{"功能一","功能二","功能三"4.});效果如下图:标题Silder滑动条是一种很常用的界面元素,可用在音量调整、进度显示、数值调整的GUI界面中,在Unity中Slider控件分为水平和垂直2种,对应的GUI函数为HorizontalSlider 和VerticalSlider,创建代码如下:1.hSliderValue = GUI.HorizontalSlider (new Rect (50, 25, 100, 30), hSliderValue, 0.0f, 10.0f);2.3.//显示水平滑动条数值bel(new Rect(25,22,100,30),hSliderValue.T oString("0.00"));5.6.vSliderVaule = GUI.VerticalSlider (new Rect (25, 70, 30, 100), vSliderVaule, 0.0f, 10.0f);7.8.//显示垂直滑动条数值bel(new Rect(22,170,100,30),vSliderVaule.T oString("0.00"));效果如下图:标题Scrollbar控件,滚动条Scrollbar常用于页面区域的滚动,例如文档浏览中,在Unity中S crollbar控件分为水平和垂直2种,对应的GUI函数为HorizontalScrollbar和VerticalS crollbar,创建代码如下:1.hSbarValue = GUI.HorizontalScrollbar (new Rect (25, 25, 100, 30), hSbarValue, 1.0f, 0.0f, 10.0f);2.3.vSbarVaule = GUI.VerticalScrollbar (new Rect (25, 50, 30, 100), vSbarVaule, 1.0f, 10.0f, 0.0f);效果如下图:标题Unity默认的控件外观十分简单,在游戏开发过程中,开发者都会根据游戏的类型和内容来设计一套个性化的游戏界面,Unity可以通过配置GUISkin来更改控件的默认样式,制作出符合游戏风格的控件外观。
unity3D学习之NGUI的使用

让我们实际的研究一下如何将NGUI和C#LightEvil结合起来。
这里使用NGUI2.7,因为他是一个开源的版本,NGUI最新的版本未经作者的许可,是不可以带入我们的开源项目使用的。
这个例子完成的功能是从NGUI例子里找出了三个界面,按最下方的按钮依次进行切换这是在之前的框架演示Mode1的基础上做的由一个状态机去进行驱动,这也是我推荐各位使用脚本的方式。
《=这是脚本,也是程序Mode1的模式是定义一个接口类,然后由脚本继承此类型实现,因为随时考虑AOT的缘故(要兼容IOS),我们的脚本有很多限制,比如不能运行时产生IL类型。
那么如果你熟悉AOT和JIT的机制,你一定会发现,脚本继承程序类型的是不可能的。
由于我们的脚本和C#语法兼容,所以,其实这个IState 会在程序中会和脚本中分别使用,他们是两个不同的东西。
只是从语法上看起来一模一样。
《=这是程序通过一个叫做ScriptInstanceState的类,他是程序中的IState,他的作用是调用脚本中的IState,通过这个类型,脚本状态和程序状态可以实现无缝切换。
绕口令来了:文章来自【狗刨学习网】在实际的游戏中,你可以一部分状态用程序实现,一部分状态用脚本实现。
由于我们的脚本是c#的严格子集,所有脚本实现的状态,作为程序也都可以正常执行。
程序实现的状态,对语法进行改写,改成C#Light可以通过的状态,也就可以作为脚本执行了。
先不管这个,其实无缝切换很简单,往这里看。
《=这是程序就是状态,直接new 就是程序,从我们的粘合类ScriptInstanceState创建,就是脚本大部分的操作都是没问题的注意以下红字是旧的部分,新0.41Beta已经修改成1.不强制使用event,所以不修改UIEventListener也可以挂事件,直接使用等号即可2.修改了Reg机制,注册更简洁,不需要特别处理黄字为新的部分。
《=这是脚本不需修改UIEventListener,使用方法与代码一致RegHelper_DeleAction<GameObject>的意思是,我们注册的委托类型是void xxx(GameObject p1) 的形式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
UIToggle:切换,从名字就能知道这个组件能做什么。
这个组件有两种状态ON/OFF.可以用于创建checkboxes, t button groups。
该文章出自【狗刨学习网】
效果展示:
一:使用步骤——创建一个checkboxes
1.首先在UI Root下建立一个Sprite,设置一张贴图,当作按钮的背景。
然后为其添加碰撞组件和Toggle组件
2.为第一个Sprite建立一个子Sprite,设置一张图片,当作选中的标识。
将其调整到适当的位置。
3.选择第一个Sprite的UIToggle组件
为State Transition中的Sprite设置对象,即刚才添加的子Sprite。
以上便创建了一个checkboxes。
二:创建一个radio button groups
1.将上面创建的checkboxes复制3个。
2.将他们三个的UIToggle中的Group属性,都改为同一个数字,但不能是0。
注意:UIToggle中的Starting State如果勾选的话初始状态则为选择状态。
三:监听UIToggle属性的变化
定义一个脚本CheckBox_Test,创建一个方法isActive,
然后将这个脚本添加到下面,并选择刚才定义的方法。
四:UIToggledObjects使用
这个组件可以实现Tab切换的效果。
1.接着上面的项目,在CheckBox下面创建两个Sprite
2.为checkbox添加UIToggledObjects组件
其中Activate表示激活状态下显示的组件,Deactivate表示激活状态下隐藏的组件。
设置如下:
其中两个Sprite,是不同的两个Sprite,即刚才创建的那两个。
效果如下:
081201542764491.png(6.91 KB, 下载次数: 0)。