NGUI 基础制作 :制作图集 Png 图片 视窗。
创建材质:material ,unity 5 ,shader 选transparent ,就是普通材质。 不然有很多选项。
---------------------------------------------------------------------------------------------------------------------------
UI Atlas:里面使用九宫格 ,可以切图片边缘。、
在用texture Paker 做 图集的时候会生成 一个大的png 图集,和一个txt 文件的 sprite坐标信息。我们就是用这两个东西做图集。
UIAtlas 是个容器,里面包含的就是我们的png图集了,里面一个个小的图就是sprite。
参数:
Material 指向当前atals正在使用的材质。在材质中最好使用NGUI提供的一些unlit shader,例如Unlit-Transparent Colored
TP Import 让你可以导入完整的使用texture packer程序制作的sprite定义表。只需要把导出来的txt文件拖动进去,所有的sprite 会自动导入。如果你使用内置的atlas maker来创建atlas,你可以放心的忽略这个参数
New Sprite 按钮让你可以创建一个新的sprite。它会自动克隆当前选中的sprite的所有参数
Delete 按钮让你删除一个不再使用的sprite。会弹出一个确认框
Sprite 下拉列表让你选择当前需要的sprite
Edit Name 区域让你可以将sprite重命名
Dimensions 是用来标示你的sprite的起始位置和大小
Border 允许你标示sprite的哪一部分不能被缩放,或者只能在一个方向缩放。Sliced sprite会使用这个参数
Padding 是4个边缘的边框宽度。可以用来调整中心点位置,同时在对sprite进行微调的时候也非常重要
Show 区域让你测试你的sprite和它在atlas中的位置
提示
1. 你可以使用多个atlas来对sprite进行分组。只要atlas使用的是同一个材质,他们就只需要消耗一个draw call
2. 为了最好的结果,材质使用的贴图的混合模式最好选择Clamp,并且格式选择Truecolor
3. 将相似的texture组合在一起组成一个atlas是一个不错的选择, 但是最好将同时使用的atlas的数量降低到最小
4. 如果你使用texture packer创建atlas,在导出的时候选择Unity3D
5. 如果你使用photoshop来创建atlas,你可以使用selection工具和信息版来确认sprite的位置和大小
http://blog.csdn.net/ldghd/article/details/7853889
----------------------------------------------------------------------------------------------------------------------
UISprite :常用的:
simple
Sliced 裁剪
Filled Both 做技能CD
使用一些小的图片,放大后,通过裁剪。还能很好的使用,减少的资源包的大小,优化了游戏的性能。
---------------------------------------------------------------------------------------------------------------------------
UIlable
字体:可以调整,颜射,渐变,勾选BBCode的话,就可以 用BB代码调整 字体颜色,加粗什么的 ,更有可控性。
通过脚本可控制 所有变量,alpha 值透明度。 修改变量的技巧更加面板上的值可以在代码中修改。
widget 装饰,pivot 对齐方式,这里可以通过代码可控,UIWidget 类 给出了装饰的一些 修饰,包括 布局,深度, 大小,方向(Aspect)。 这里解决了以前一直困扰我的一个问题,对NGUI不熟,改变了布局 导致 原点坐标有差异。而无法自适应。
---------------------------------------------------------------------------------------------------------------------------
UIAnchors
概览
UIAnchor让你可以固定game objects在屏幕或者其他widgets的某一边或者某一个角。这是一个关键的组件,用来在NGUI中创建模块化的UI。
是否想让你的一部分UI粘在屏幕的角落或者边缘上?比如魔兽世界。在这个游戏中,游戏地图永远在屏幕的右上角,热键一直在屏幕的下方,不管你用的是多大的屏幕分辨率。你如何做到类似的东西呢?用anchors。
NGUI的默认UI布局会给你提供一个anchor——一个居中的anchor。以魔兽世界的UI为例子,你需要增加额外的两个anchor。一个设置成TopRight,另一个则为Bottom。之后你给这两个anchor增加一些子节点,然后修改屏幕的尺寸,你会发现UI会一直在你想要的地方(右上方或者下面)。
通过设置anchor的Container让一个UI附着在另一个UI上。如果Container是UIWidget,那么会用widget的dimesions来代替屏幕矩形(就是TopRight将将是相对与这个widget,而不是屏幕)。如果是game object,那么这个矩形就是game object下的所有节点widget的bounds。因为这个原因,当你用父节点当做Container的时候一定要注意,因为父节点的Container大小会包含这个你要anchor的widget,这可能不是你要的效果(比如你要放在父节点的左上角,但是当这个widget到了左上角后,父节点的左上角由于这个widget的到来可能就变了,之后再次移动widget,周而复始……)。
调整Relative Offset来用相对值来改变位置。 如果X是1就是100%的container宽度. Y是1就是100%的container高度。 0.5 = 50%,等等。也可以是负数。
上面的调整也可以通过用Pixel Offset来实现。就和你想的差不多……通过给定的X、Y的值来以像素为单位调整anchor的偏移。
默认情况下anchor只会执行一次。如果要在每个update里面都执行,那勾选掉Run Only Once选项。
-----------------------------------------------------------------------------------------------------------------------
UITexture:
UIBsicSprite : UIwidget : UIRect : MonoBehaviour
总览
UITexture是NGUI中最基础的可绘制组件。它继承了UIWidget的所有功能,并增加了一个可视组件-- texture--通过它的大小来伸缩。
- 你能指定一个Texture用于绘制。当你这样做的时候,将会创建一个默认的Material。如果你不指定一个texture,将使用Material的texture。
- 如果你想要的话,你也能指定一个你自己的Material。除非你指定了材质,它才会使用材质的main texture,否则将使用你上面指定的texture。
- 如果你不想创建一个Material,你也可以指定Shader来代替。
- 你能指定一个UV Rectangle用于控制texture的那部分会被绘制,X和Y控制UV的偏移,W和H控制UV的宽度和高度(texture坐标)。和所有的纹理坐标相似,这些值通常是0到1(0意味着texture的一边,而1意味着另一边)。UVs是基于左下角的,所以如果你想要绘制纹理半部分,你应该指定UV Rectangle为(0,0.5,1,0.5)
- 选择菜单中的“Make Pixel-Perfect”选项将让UITexture恢复到它的原始大小,所以如果源texture为300*200像素,你的UITexture的宽和高会调整到那个大小。
Pro-Tip
你能使用UITexture创建你的整个UI,然后通过打开图集制作器(NGUI > Open > Atlas Maker)简单地把它增加到图集,选择你UI的root,点击Create按钮。你的所有Texture将替换这个图集里面的,并且使用Sprite来替代
贴图:设置贴图的选项
----------------------------------------------------------------------------------------------------------------------
UIInput
通过 box Collider
制作点击响应
UIInput:用户输入框,可以输入格化的内容,如密码,用户名
UICheckBox:勾选框
UIInput:在Widget Tool里选择UIInput然后选择一个背景图片,添加到视窗面板里
加入后,有三个对象,分别是Input,Background,Label
Input:用户点击后进行输入的主控件
Box Collider:用户点击后进行输入监控区域
UIInput(Script):
Label:文本显示在哪个UILabel里
Starting Value:输入框开始显示的字
Saved As:保存输入内容到prefabs中
Active TextColor:激活文本框后显示颜色
Inactive Color:默认状态颜色
Caret Color:插入字符状态颜色
Selection Color:选择状态中字符的颜色
Input Type:输入类型(standard)标准的,(AutoCorrect)自动修正,(Password)密码
Keyboard Type:对应移动平台键盘类型
Validation:输入类型限制
Character Limit:输入字符数限制
On Submit:输入完后进行事件分发
On Change:输入字符有变动时进行事件分发
然后是一个UISprite & UILabe
UICheckBox:
在Widget Tool里添加几个Toggle
Group:单选组,当你有多个CheckBox需要单选时,得定义在同一个组内
Starting State:单选组的默认状态(默认哪个选中)
State Transition:状态过渡时的图片与动画选项
Sprite:选中状态的图片
Animation:选中状态时播放动画
Transition:从未选中到选中状态的过渡效果(Smooth,平滑过渡 & Instant,直接替换)
OnValueChange:当事件发生改变时进行事件分发
有一个UIButton Scale(Script):当点击时播放Tween动画选项
Script:Tween动画功能脚本
Tween Target:播放动画的目标
Hover:鼠标停留在上面时播放的动画
Pressed:按下时播放的动画
Duration:动画持续的时间
UIPlay Sound Script:用户点击时播放声音
------------------------------------------------------------------------------------------------------------------
UIButton scale
能改变大小
UIButton Color
该变状态颜色
UIButton Rotation
旋转
记住一点,一切代码控制的思想 为好。 当然,能减少我们工作量的话就不用执拗了。但是要是在明明白白的情况下才去用可视化界面。