不知道大家为什么入行?
为了赚钱,为了养家糊口也是个不错的原因
但有多少人和我一样是因为追求美丽的事情才入行的
代码之美,在于发现
真的很美
其实代码很多层次,工种也很多,也不能一概而论
而最美的代码肯定不是你现在每天在做的代码
去找回你曾经的感动吧
最后一站,仿王者荣耀手游框架分析
打开【最后一战】客户端源码
-建议用Unity4.6.3
首先看到登录界面就很不和谐
-所以你应该知道UI,和3D场景是2个人分别做的,
明显UI不能看了吧
-所以哪个做UI的程序猿水平你看出来了吧,而不出意外,肯定又用到了臭名昭著的NGUI框架
这时候你会碰到第一个坑,NGUI我不懂啊,我去看下API
如果你有这个想法,我不得提供一些NGUI资料给你,但详细链接和NGUI入门不在这里叙述了
(我在公司一份NGUI代码都没完整写过,我连一天NGUI的文档都没看过
但看看我是怎么解决的,不超过5分钟,5分钟你可能连NGUI的资料都没找到,网络太大了,你找到的都是很废的资料)
首先找到登录按钮
-看到NGUI多恶心了吧,比较难找,(如果你没经验)
然后点击事件是?
-没有明显提示,看到了吧,恶心你(这个做UI的程序哥们连loginbutton,denglu这样的名字也不愿意起,就留一个Button恶心你)
双击打开EventListener Script
-分析一下,里面确实涉及一些底层的软件思想,确实值得学习,但是对于新手就恶心了
void OnSubmit () { if (onSubmit != null) onSubmit(gameObject); }
void OnClick () { if (onClick != null) onClick(gameObject); }
void OnDoubleClick () { if (onDoubleClick != null) onDoubleClick(gameObject); }
void OnHover (bool isOver) { if (onHover != null) onHover(gameObject, isOver); }
void OnPress (bool isPressed) { if (onPress != null) onPress(gameObject, isPressed); }
void OnSelect (bool selected) { if (onSelect != null) onSelect(gameObject, selected); }
大概原理就是button绑定一个event事件,然后submit,click,press等事件,派发到一个GameObject去处理,那到底这个GameObject在哪里呢?
-最后在这里找到 LoginWindow.cs
来到这里明显能看出,整个框架还是不错的,命名不错,(view windows,分开,清晰,还有FSM是状态机的意思,就是说这套代码有状态机,在加一个什么事件流就是很多人鼓吹的游戏AI,其实很废话,那个游戏没有FSM,客户端+服务器都有)
-所以这还是一个很值得学习的源码,在LoginWindow->onLoginSumbit添加一下断点,然后就可以开始学习了
void OnLoginSubmit(GameObject go)
{
#if UNITY_STANDALONE_WIN
if (string.IsNullOrEmpty(mLoginAccountInput.value))
return;
mLoginPassInput.value = "123";
#else
if (string.IsNullOrEmpty(mLoginAccountInput.value) || string.IsNullOrEmpty(mLoginPassInput.value))
return;
#endif
}
这时候你可能又会碰到第二个坑,服务器我不会搭啊
-这也是没办法的,这是U3D入门概要,服务器就不在这里叙述了
-以后你会碰到更多这样的坑,就看你愿不愿意花时间去踩坑了