赞
踩
精灵Sprite的类型:
精灵的基本属性:
Pivot:内部对齐方式,一般适用于label。
Dimensions:精灵大小,单位为像素。后面的Snap按钮是用来恢复原始大小的。
private void Start()
{
render = cube.GetComponent<Renderer>();
}
public void test()
{
// 给3D物体cube换颜色
render.material.color = Color.red;
// 给精灵换图集中的其他图片
sprite.spriteName = "XXXX图片名称";
// 给精灵换颜色
sprite.color = Color.red;
}
Button Scale按钮缩放:
如果要实现按钮的动态效果需要添加Button组件,比如实现鼠标悬停时的放大效果要添加Button Rotation组件。
Hover:光标悬停状态的缩放。
Pressed:点击按钮时的缩放。
Tween Target:当点击按钮后需要变化的不是按钮本身时,就要用到Tween Target,这样所设置的动画就作用在你所指定的节点上了。
Unity的锚点概念跟cocos的是不同的,Unity的锚点就像cocos中的widget,是用来设置节点与父节点间的位置关系的。而cocos的锚点是作用于当前节点本身的,当节点旋转、缩放、对齐时会有影响。所以cocos的锚点是单点,而Unity的锚点是四点。
NGUI和UGUI的锚点也有所不同,NGUI的锚点是上下左右,而UGUI的是花瓣锚点。
NGUI锚点通常分为两种,第一种是节点锚点,第二种是属性锚点,节点锚点一般用作做一个区域,形成父子关系并统一管理。而属性锚点也能实现相同的功能,一般用作跟其他同级节点做同步处理。
不建议节点锚点和属性锚点共用,容易出现界面混乱。
NGUI的布局方式可以考虑在UI Root下先根据方位建立几个锚点,然后把各个方向的节点放在锚点下面。
如何更换字体:
使用Unity字体:准备好字体文件,放到项目中,把属性中第一个下拉框由NGUI改成Unity,然后把字体文件拖放到后面即可。
使用NGUI字体:创建空节点,添加NGUI Font组件,将字体类型Font Type改为动态字体Dynamic,给字体文件,然后点应用。后面就可以用NGUI选字体了。弄好后空节点就可以删了。
选了Unity就直接给字体文件,而选择NGUI则直接从font下拉框选择,不要手动给字体文件。
使用Toggle,要先给Sprite添加碰撞组件,然后添加Toggle组件。
在On Value Change中指定脚本,脚本内容如下:
public AudioSource audio;
public void ToggleFunc()
{
audio.mute = UIToggle.current.value;
print("开关状态:" + UIToggle.current.value);// true\false
}
另外:Toggle有一个Group属性,相同group数字的开关会被视为同一组。
滑动条提供了默认的一些用于改变label的方法,用于显示百分比。也可以自己写。
public AudioSource audio;
public void SliderFunc()
{
audio.volume = UISlider.current.value;// 改变音频音量大小
print("滑动条当前值:" + UISlider.current.value);// 0~1之间的小数
}
public float score = 10; public void ListFunc() { switch(UIPopupList.current.value) { case "简单": score = 10; break; case "一般": score = 100; break; case "困难": score = 1000; break; } }
给精灵添加Input Field Script组件后,精灵就可以实现文本域的效果。
public void InputFunc()
{
print("当前输入内容:" + UIInput.current.value);// submit和change的时候都用此方式获取内容
}
可以将文本域变成多行文本域,类似于聊天界面。
一般要跟Text List组合使用,用于聊天界面的输入框。添加组建后别忘了把对应的Text List组件所在的UI元素拖过来。
这些脚本都是可以改的,比如Chat Input脚本中按了回车键会执行一行代码mInput.isSelected = false;这一行就可以改为true或者直接注释掉,这样就能一直输入了,不用每次输入后都丢失焦点。
NGUI提供了Scroll Bar的预制件,可以直接搜索,搜索的时候可以筛选一下文件类型Prefab预制件,选择Control - Simple Horizontal Scroll Bar,直接拖放到hierarchy列表中即可。调整大小和位置以后,把滚动条跟刚才的UI Text List组件中的Scroll Bar对应上即可实现关联滚动。
筛选方式如下:
Scroll View和Scroll Bar不一样,Scroll View是一种默认UI元素(不是预制件),Scroll View默认自带一个Panel组件,他的功能是充当一个遮罩,在View内部的子元素才会展现出来。
拖放组件一般会涉及到多个组件,分别为Drag and Drop Root、Drag and Drop Item、Drag and Drop Container等。这一套组件可以实现普通物体的拖拽,也可以配合Scroll View做一些类似拖放排序的功能。
有时候拖拽功能的目标不是一个完整的容器,而是多个方格(例如背包换格子),这个时候可以简单的对NGUI的代码做个二次封装:
// 继承UIDragDropItem类,重写他的Release方法 public class MyDrag : UIDragDropItem { protected voerride void OnDragDropRelease(GameObject surface) { base.OnDragDropRelease(surface); Transform releaseParent = transform.parent;// 记录初始物体 if (surface != null)// 如果拖拽后有指向目标,则根据不同的指向目标执行不同的操作 { if (surfase.tag == "Back")// 如果拖拽后指向的目标是back背包,则移动到当前指定位置 { transform.parent = surface.transform; transform.localPosition = Vector3.zero; } else if (surfase.tag == "Obj")// 如果拖拽后指向的目标是Obj物体,则与当前物体交换位置 { Transform surfaceParent = surface.transform.parent; transform.parent = surfaceParent; transform.localPosition = Vector3.zero; surface.transform.parent = releaseParent; surface.transform.localPosition = Vector3.zero; } } else // 如果拖拽后没有指向目标,则回到原位置 { transform.parent = releaseParent; transform.localPosition = Vector3.zero; } } }
此网格非彼网格,这个网格指的是网格布局,是一个UI节点,并且是父节点,这个节点下的物体都会以网格的形式排列展示。
更多内容请查看总目录【Unity】Unity学习笔记目录整理
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。