Unity3d NGUI控件知识

一、Panel
      
     更多精彩请关注: 【狗刨学习网】
     1、Alpha属性影响所有在panel下面的widget。所以可以用它来淡出整个窗口

     2、如果你的UI需要被灯光影响,需要勾选上Normals。

     3、没有panel所有东西都不能够被渲染出来。如果你对Unity熟悉,你可以把UIPanel当做Renderer

     4、Panel会根据dimensions自动Clip所有它的子节点。使用这个功能需要选择Clipping下拉列表中的任意选项,之后调整Scene View中紫色矩形的尺寸,就像调整widget的尺寸一样。通过这样做你可以把一个panel放到Scroll View中,让他轻松的拖拽。

     5、一个动力学Rigidbody会自动增加到你的panel上,因为对于Unity来说这样会提升性能。移动静态的collider会有很多消耗性能的操作,但是移动rigidbody就不会。

二、Camera

     1、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进行逻辑与运算,有需要的话你可以微调这个值。如果你修改了UI的game object的Layer,记得调整Event Mask,否则你可能会发现UI不响应事件。

     4、Allow Multi-Touch选项用来控制是否支持多点触碰。如果勾选掉,多点触碰也会当做单点触碰。
小贴士

     UICamera发送以下事件给collider:

  • OnHover (isOver) 发送时机为鼠标悬停(只触发一次)或者离开collider。
  • OnPress (isDown) 发送时机为鼠标在collider上按下。
  • OnSelect (selected)发送时机为鼠标点击和松开的时候都在同一个object上。
  • OnClick ()发送时机和OnSelect一样,但是要求鼠标没有移动特别多。UICamera.currentTouchID表示按下的鼠标哪个键。
  • OnDoubleClick ()发送时机为当在四分之一秒内click两次的时候。UICamera.currentTouchID表示按下的鼠标哪个键。
  • OnDragStart ()发送时机为OnDrag()事件之前。
  • OnDrag (delta) 发送时机为一个object被拖拽。
  • OnDragOver (draggedObject)发送时机为其他的object拖拽到他的上面。
  • OnDragOut (draggedObject)发送时机为其他的object拖拽出他的上面。
  • OnDragEnd ()发送时机为drag事件结束。发送给被拖拽的object。
  • OnInput (text)发送时机为输入的时候(在点击选择了一个collider之后)。
  • OnTooltip (show) 发送时机为鼠标悬停在一个collider上一段时间没有移动。
  • OnScroll (float delta)发送时机为鼠标滚轮滚动。
  • OnKey (KeyCode key)发送时机为键盘或者输入控制器被使用的时候。

三、UIGrid

     1、Arrangement的值决定了子节点的摆放位置。Horizonta让子节点向右排列,Vertical向下排列。

     2、Max Per Line属性控制Horizontal排列时候的最大有多少列, Vertical排列的时候最大有多少行。

     3、Cell Width和Height决定了所有条目的间隔。

四、UILabel

     1、修改Pivot来改变label的对齐方式。Top-left、Left和Bottom-left是左对齐。Top、Center或者Bottom是中间对齐。Top-right、Right、Bottom-right是右对齐。

     2、Overflow操作让你决定lable的文本超过允许的空间之后的处理方法。
  • Shrink Content 内容自动缩放。与Keep Crisp设置一起来控制Dynamic字体,使字体的字号变小而不是简单的缩放。这样不管label是否被缩放都能保持清晰。
  • Clamp Content 剔除多余的文本。
  • Resize Freely 根据输入的文本内容自动调整dimension。不需要手动调整。
  • Resize Height 保持宽度不变,必要时增加高度。

     3、文本可以有shadow或者outlineEffect。shadow会使用两倍的geometry,outline会使用五倍——所以要小心这个属性。Distance参数控制shadow或者outline与原文本的距离,以像素为单位。

     4、运行时修改文本,你可以通过以下方法:
     
      UILabel lbl = GetComponent();

      lbl.te   xt = "Hello world!";


注意事项      1.UILabel彩色字标签失灵

       A:有时候会发现UILabel的[ffffff][-]这样的色彩标签突然不起作用了,那你要检查一下是不是Widget的Color设置了颜色,改成白色就正常了!

     2.Encoding属性不见了


       A:是的,新版本中Encoding属性取消了,取而代之的是BBcode!
五、Button

      1、Button组件可以挂在任何有collider的game object上。不需要一定挂在widget上。

      2、渲染挂着Button组件物体的摄像机,需要有UICamera组件,这样Button的各种事件才能生效,因为所有事件是由UICamera发出的

      3、Button接收鼠标hover、press和click事件,然后修改Target属性的颜色。Target通常是widget(sprite、label或者texture),但是也可以是有Light组件的物体,或者是Renderer。
小贴士

      通常把Button组件放在按钮的背景sprite上。快捷键ALT+SHIFT+C快速添加collider,之后勾选sprite的”Box Collider“选项,这样box collider就可以自动缩放到和sprite大小一样。

六、UISprite

     1、Sprite TypeFilled,这样可以做一个类似冷却的进度条。

     2、Sprite TypeTiled,这样你的sprite会重复的填充一块区域。尽量不要用太小的sprite因为这样会创建很多的三角形。给你的sprite一个1像素的border也是个好主意,这一个像素会被排除掉(所有tiled的图的边缘看起来就衔接起来一样)。

      3、Sprite TypeSliced就可以创建一个9-slicing的sprite。只有指定了Border后它才会真正起作用。(点击上面提到的Edit按钮)。sliced sprite的一个应用就是做按钮的背景。

      4、使用”Make Pixel-Perfect“选项(新版本是Snap)来让UISprite 使用它的原始尺寸。就是如果你的原始texture是300*200的像素,UISprite的dimensions对应的width和height就会调整到这个数值。 注意这个对Tiled和Sliced sprite没有效果——它们有自己的规则。

      5、Tiled Sprite会自动平铺到整个精灵的大小内,适合使用无缝贴图制作背景。

      6、Sliced Sprite填充完整个的Sprite区域,固定大小,不会随图片大小而改变。(有人说这个适合用来作角色的头像显示)

你可能感兴趣的:(unity)