泰斗破壞神筆記
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);
先實例化后在賦值屬性.
總結.實例化過程中屬性會重置,而字段不會!
