泰斗破坏神笔记

泰斗破坏神笔记

2016427日星期三001-开始素材的制作

1制作图集

1.1在要制造成图集的素材上点右键NGUI-Open altas Maker-

2制作背景

2.1选择simple texture

2.2Anchors选择unified,上下左右都选择0,这样的话代表距离屏幕边界一直为0,无论屏幕怎么变化

3制作按钮

3.1添加sprite

3.2sprite上添加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也随着变化

2016428日星期四 002-登陆界面的创建

 

1制作父节点

1.1可以添加一个invisible widget作为父节点,把上一节做的按钮图标什么全放进去.

2Widgetdepth属性可以确定可见度

3制作好的NGUI组件可以拖入prefertool里重复利用

4可以为容器添加动画

4.1Tween-scale缩放的动画

2016429日星期五003-注册界面的创建

没啥好记的

201659日星期一006-控制用户登录和注册界面的跳转

1.动画控制中最好直接把Tween组件禁用掉,直接通过代码控制tween.play();可以控制往前播放或者往后播放

2.按钮的点击动作在UI Button组件里的onclick下,在notify中选择一个附带有代码文件的GameObject,然后再method中就可以选择方法了。

2016514日星期六 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位置时先不要往里面拖动东西,先定好位在拖.

2016516日星期一 008服务器列表的初始化

1.     

  1.     NGUITools.AddChild(ServerUiGrid.gameObject, sbp.gameObject);
 

grid添加子元素时需用到这个方法.

 

2.       

  1.  public string ServerName
  2.     {
  3.         get {returnServerName;}
  4.         set{GetComponentInChildren<UILabel>().text = value;}
  5. }
 

这个方法用来设置名称后自动修改label的颜色;

3.当你设置了父元素的TweenScale动画后,如果你选择不自动播放, start里添加的东西会保持scale0,你就会看不见他.这句话理解一下.

(重要)2016517日星期二 -009处理服务器的选择

今天调试中解决了一个大的问题.

首先我没有按照视频中的方法.我把点击事件的方法做到了按钮上,然后通过方法来获取按钮的ServerBtnProperty的属性,然后给serverManger中的selectserver(代表界面上选择的那个服务器图标,选中哪一个服务器后,这个图标会变成刚才按下的服务器按钮的样子,)赋值.

刚开始我是这样做的:

  1.         ServerBtnProperty sbp;
  2.         for(var i =0; i < servernum; i++)
  3.         {
  4.             var randomnum =Random.Range(0,100);
  5.  
  6.             sbp = randomnum >50?Redserver:Greenserver;
  7.             sbp.ServerIP="127.0.0.1";
  8.             sbp.ServerName="第"+ i +"个服务器";
  9.             sbp.ServerPerNum= randomnum;
  10.             sbp.sm =this;
  11.             ServersList.Add(sbp);
  12.             NGUITools.AddChild(ServerUiGrid.gameObject, sbp.gameObject);
  13.  
 

ServerBtnProperty,ip,num都是字段,servername为属性.

  1.     public string ServerIP{ get;set;}
  2.     publicServerManger sm;
  3.     public string ServerName
  4.     {
  5.         get {return _servernameeee;}
  6.         set
  7.         {
  8.             _servernameeee = value;
  9.             GetComponentInChildren<UILabel>().text = value;
  10.          
  11.         }
  12.     }
  13.     private  string _servernameeee;
  14.     publicintServerPerNum;
 

 

如果运行上面的程序你会发现.添加到grid的下的按钮ipnum正常,但是他的name却变成了null.servernameeee改为public,一切正常

查阅资料发现NGUITools.AddChild调用了instantiate方法, instantiate会把属性重置,所以之前修改的属性在调用方法后都会消失,问题找到就很好解决,

 

 

  1.         ServerBtnProperty sbp;
  2.         for(var i =0; i < servernum; i++)
  3.         {
  4.             var randomnum =Random.Range(0,100);
  5.             sbp = randomnum >50?Redserver:Greenserver;
  6.             GameObject go=NGUITools.AddChild(ServerUiGrid.gameObject, sbp.gameObject);
  7.             ServerBtnProperty sbp2 = go.GetComponent<ServerBtnProperty>();
  8.             sbp2.ServerIP="127.0.0.1";
  9.             sbp2.ServerName="第"+ i +"个服务器";
  10.             sbp2.ServerPerNum= randomnum;
  11.             sbp2.sm =this;
  12.         ServersList.Add(sbp);
 

 

先实例化后在赋值属性.

总结.实例化过程中属性会重置,而字段不会!

 

 





posted @ 2016-05-14 22:18  CodeC  阅读(1809)  评论(0编辑  收藏  举报