泰斗破坏神笔记
2016年4月27日星期三001-开始素材的制作
1制作图集
1.1在要制造成图集的素材上点右键NGUI-Open altas Maker-
2制作背景
2.1选择simple texture
2.2Anchors选择unified,上下左右都选择0,这样的话代表距离屏幕边界一直为0,无论屏幕怎么变化
3制作按钮
3.1添加sprite
3.2在sprite上添加attach 一个box Collier
3.3继续attach 一个button script
3.4UI button 组件下可以设置四种状态的图片
3.5继续attach一个play sound组件,可以设置点击时的声音
3.6添加一个label显示文字
3.7继续在按钮上增加一个uibutton组件 ,这样可以把label拖进组件的tween target中,可以使label也随着变化
2016年4月28日星期四 002-登陆界面的创建
1制作父节点
1.1可以添加一个invisible widget作为父节点,把上一节做的按钮图标什么全放进去.
2Widget的depth属性可以确定可见度
3制作好的NGUI组件可以拖入prefertool里重复利用
4可以为容器添加动画
4.1Tween-scale缩放的动画
2016年4月29日星期五003-注册界面的创建
没啥好记的
2016年5月9日星期一006-控制用户登录和注册界面的跳转
1.动画控制中最好直接把Tween组件禁用掉,直接通过代码控制tween.play();可以控制往前播放或者往后播放
2.按钮的点击动作在UI Button组件里的onclick下,在notify中选择一个附带有代码文件的GameObject,然后再method中就可以选择方法了。
2016年5月14日星期六 007制作服务器选择界面
1本次的重点内容使scroll view的制作
1.1UI Scroll View组件用来制作可以拖动的视图
1.2UI Scroll View的重要属性
1.2.1Clipping剪辑模式,这里主要选择SoftClip模式(柔和剪辑模式),在这种模式下,Panel会剪辑一块可视区域出来显示,这个被剪辑出来的区域以外的部分将会被剪辑掉而无法显示出来.
i.SoftNess属性为剪辑边缘的柔和程度
1.2.2Movement 滚动方向.Horizontal左右,Vertical上下,Unrestricted自由拖动
1.2.3DragEffect 拖动效果.
i.None无效果
ii.Momentum 带动能的拖动,也就是拖动有一个惯性
iii.MomentumAndSpring 带动能与弹性的拖动,就是到底部会弹回来
1.3UI Scroll View的注意事项
1.3.1滚动视图内包含的内容,一定要有一个BoxCollider,否则无法接受事件.
1.3.2滚动视图内包含的内容一定要有一个DragScrollView组件,这个组件会和ScrollView相互作用,在运行时,他会自动去找到父物体的Scroll View,然后和他相互作用,让视图内的内容滚动起来.
2Grid的使用
2.1Grid用来自动排列UI,经常和Scroll View配套使用
2.2Grid介绍
2.2.1Arrangement网格的排列方向
2.2.2Cellwidth网格的宽度
2.2.3Cellheight网格的高度
2.2.4Columnlimit网格列数限制,填2表示最多2列
2.2.5Pivot,锚点.这个一般填左上角,然后Grid里的内容锚点也是左上角.
2.3设置Grid位置时先不要往里面拖动东西,先定好位在拖.
2016年5月16日星期一 008服务器列表的初始化
1.
NGUITools.AddChild(ServerUiGrid.gameObject, sbp.gameObject);
为grid添加子元素时需用到这个方法.
2.
public string ServerName
{
get {returnServerName;}
set{GetComponentInChildren<UILabel>().text = value;}
}
这个方法用来设置名称后自动修改label的颜色;
3.当你设置了父元素的TweenScale动画后,如果你选择不自动播放, 在start里添加的东西会保持scale为0,你就会看不见他.这句话理解一下.
(重要)2016年5月17日星期二 -009处理服务器的选择
今天调试中解决了一个大的问题.
首先我没有按照视频中的方法.我把点击事件的方法做到了按钮上,然后通过方法来获取按钮的ServerBtnProperty的属性,然后给serverManger中的selectserver(代表界面上选择的那个服务器图标,选中哪一个服务器后,这个图标会变成刚才按下的服务器按钮的样子,)赋值.
刚开始我是这样做的:
ServerBtnProperty sbp;
for(var i =0; i < servernum; i++)
{
var randomnum =Random.Range(0,100);
sbp = randomnum >50?Redserver:Greenserver;
sbp.ServerIP="127.0.0.1";
sbp.ServerName="第"+ i +"个服务器";
sbp.ServerPerNum= randomnum;
sbp.sm =this;
ServersList.Add(sbp);
NGUITools.AddChild(ServerUiGrid.gameObject, sbp.gameObject);
在ServerBtnProperty中,ip,num都是字段,servername为属性.
public string ServerIP{ get;set;}
publicServerManger sm;
public string ServerName
{
get {return _servernameeee;}
set
{
_servernameeee = value;
GetComponentInChildren<UILabel>().text = value;
}
}
private string _servernameeee;
publicintServerPerNum;
如果运行上面的程序你会发现.添加到grid的下的按钮ip和num正常,但是他的name却变成了null.把servernameeee改为public,一切正常
查阅资料发现NGUITools.AddChild调用了instantiate方法, instantiate会把属性重置,所以之前修改的属性在调用方法后都会消失,问题找到就很好解决,
ServerBtnProperty sbp;
for(var i =0; i < servernum; i++)
{
var randomnum =Random.Range(0,100);
sbp = randomnum >50?Redserver:Greenserver;
GameObject go=NGUITools.AddChild(ServerUiGrid.gameObject, sbp.gameObject);
ServerBtnProperty sbp2 = go.GetComponent<ServerBtnProperty>();
sbp2.ServerIP="127.0.0.1";
sbp2.ServerName="第"+ i +"个服务器";
sbp2.ServerPerNum= randomnum;
sbp2.sm =this;
ServersList.Add(sbp);
先实例化后在赋值属性.
总结.实例化过程中属性会重置,而字段不会!