SimpleFramework NGUI/UGUI基础知识[1]

请配合视频一起学习:http://pan.baidu.com/s/1gd8fG4N

这个基础帖子比较难写,不是因为多么难,而是因为大家的水平参差不齐,基础线难以恒定。有的人已经是Unity大牛,看下框架的使用方式即可,有的人用U3D一两年了,它不需要知道怎么生成包,而有的是第一天才开始学U3D,甚至连Unity导入插件包不能有中文路径都不知道。
 
我们不可能从头教你怎么去学Unity,我们也没空,ULUA的使用人群比其他的热更方案门槛已经低得多,不谦虚的说,得益于群里管理员跟我长时间的业余努力,才做到的。所以ULUA的使用人群的设定范围大体是:
 
(1)至少会用Unity开发程序,基本的Unity的知识要懂。
(2)知道怎么用Unity生成APK/IPA到移动设备上。
(3)知道 ULUA的c#与c、c++等原生插件通讯原理。
 
如果上面都不懂,我也不能说让你哪儿凉快哪儿呆着去,至少你得自己百度明白了这些,也不要在群里@群主,我也没空去普及这些东西,作为一个程序员,这些基本的技能都要有,否则还是趁早改行吧。
 
 
这个帖子会一直持续更新,直到所有符合以上3点条件的同学都能不需要问我什么关键点的时候为止。
 
框架的定位前期不是一个专业性的游戏开发框架,我在群里多次说过,当时的SimpleFramework只是从我前创业游戏里面剥离出来的部分代码拼凑而成,目的仅仅是为了演示ULUA到底怎么做热更方案,这一点在去年圣典的帖子上已经说过了“很多人不知道怎么用ULUA,所以搞了个演示DEMO”。到后来,这个初衷发生变化的原因是,突然有一天发现很多人已经基于这个DEMO去做游戏了,这个说实话这个出乎我的意料。
 
为了适应大家的使用习惯,在群里我也花时间调研大家使用的开发游戏的架构方式等,后来得出使用PureMVC的同学大多数,为了方便大家直接上手,我也就用相对专业化的方式改造框架,整理、清除不需要的部分等,变成现在的样子。
 
先看看Unity工程外层两个重要的目录LuaEncoder跟Server是干嘛的:

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20150809111658.png
图片点击可在新窗口打开查看
 

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20150809111658.jpg
图片点击可在新窗口打开查看

上面的图是目前SimpleFramework的基本目录结构,而且这个结构短时间内不会发生太多的变化。
我们可以简单介绍下每个目录的用途。
 
Examples :框架自带的Demo例子,如果只需要框架的同学,里面的资源可以删除掉。去“疑难解答”里面查看方法。
 ---Builds:里面都是一些NGUI定义的图集啊、Prefab等资源。用于生成assetbundle而准备的资源。
 ---Editor:里面是例子用到的一个新手引导步骤演示的编辑器脚本。
 ---Editor Default Resource:目录是新手引导步骤对话框用的的图片资源。
 ---Rsources:例子里面用于演示的一个内建的GUI容器的Prefab。
 ---Scenes:里面一个login场景文件,另一个是cstolua自带的性能测试场景文件。
 ---Textures:里面是Buidls目录里面图集的原图文件。

Lua:框架自带的Lua源码目录,用户自定义的Lua脚本也就是放在这里面,最后打包的时候,打包脚本会将其按目录结构生成到StreaminAssets目录里面去,然后在将其上传到游戏的Web服务器上面,用于准备被每个游戏客户端下载更新他们本地的Lua脚本。达到热更目的。
 ---3rd:里面是第三方的一些插件lua、实例源码文件,比如:cjson、pbc、pblua、sproto等。
 ---Common:公用的lua文件目录,如define.lua文件,一些变量声明,全局配置等,functions.lua常用函数库,通讯的protocal.lua协议文件。
 ---Controller:控制器目录,它不依赖于某一个Lua面板,它是独立存活在Luavm中的一个操作类,操作数据、控制面板显示而已。
 ---Logic:目录里面存放的是一些管理器类,比如GameManager游戏管理器、NetworkManager网络管理器,如果你有新的管理器可以放到里面。
 ---System:这个目录是cstolua的系统目录,里面存放都是一些常用的lua类,为了优化lua调用速度,用lua重写的unity常用类。
 ---View:这是面板的视图层,里面都是一些被Unity调用的面板的变量,走的是Unity GameObject的生命周期的事件调用。

Plugins:ulua底层库所在的目录,里面存放的是不同平台的底层库,之所以ulua效率高,就是它是纯c的lua虚拟机,而不是c#解释型的。
 ---Andriod:安卓lua虚拟机底层库,里面分为armv7-a与Intel x86平台。
 ---iOS:里面就是苹果lua虚拟机底层库。
 ---ulua.bundle:里面是Mac机器的底层库。
 ---x86:里面是Win32/Linux32位机器的lua虚拟机底层库。
 ---x86_64:里面是Win64/Linux64位机器的lua虚拟机底层库。
 
Scripts:框架的C#脚本层,之所以这个目录跟lua目录都放在最外层,为了让用户一眼都能找到,明白是什么。
 ---Common:框架的公用定义类。BehaviourBase(行为基类)、GlobalGenerator全局构造器、与luavm通知unity游戏对象的“LuaBehaviour”桥类。
 ---ConstDefine:常量定义目录,AppConst(应用常量)ManagerName(管理器名称)NotiConst(通知常量,用于mvc消息通知)。
 ---Controller:控制器目录,分为Boostraps启动控制器,跟Command常用逻辑控制器。
 ---Framework:经过修改过的PureMVC的框架文件。
 ---Manager:Unity提供基础功能的管理器类,音乐、面板、线程、资源等众多管理器。
 ---Module:PureMVC的模块层,目前里面将Socket作为一个模块代理放到里面了。
 ---Network:网络的常用辅助类,ByteBuffer字节操作封装类,网络协议类,转换器类。
 ---Utility:常用工具类。
 ---View:C#用的PureMVC的视图层。

uLua:ulua/cstolua的核心目录,里面还有经过我们修缮后ulua的基础使用例子,用户初学者最佳。
 ---Core:顾名思义,ulua的核心目录,所有c#与lua的交互都是通过它进行调度的。
 ---Docs:ulua自带的文档目录,因为ulua基于LuaInterface,所以这里面就是它的文档。
 ---Editor:这是供cstolua去反射定义Wrap文件列表的工具类目录。
 ---Examples:经过我们修改增加后ulua自带的例子。
 ---Source:这个是cstolua的核心目录,里面有Base核心目录,与动态生成用于存放LuaWrap类的缓存目录。


上面的目录结构,就介绍到此为止了。既然是热更新游戏框架,接下来我们说下怎么做热更?
其实做热更的步骤不麻烦,因为Unity的c#类部分热更不了,那我们需要热更的就只有Lua代码部分了,当我们写完游戏测试OK了,就可以上线运营,并且在Web服务器上面部署最新的版本资源文件,我们就可以将Lua的代码编码后上传到Web服务器上面去,当游戏客户端启动的时候,它会启动解包流程、解包的资源一般都是当时做包时候的资源,到后面我吗修改以后,它内部的资源可能已经不是最新的了,但是大部分可能是新的,只有少部分需要更新,那紧接着就启动更新流程,从Web服务器上面的资源配置列表里面,通过MD5/CRC比较查询到最新的资源,下载更新本地的文件,达到更新最新版的目的,游戏顺利启动。

上面基本上就是热更的指导思想了,SimpleFramework框架也基本上以此思路在运行的,如果还不清楚的话,可以看下图:
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看
 


[本日志由 admin 于 2015-09-03 11:32 AM 更新]
上一篇: uLua/cstolua使用基础
下一篇: SimpleFramework NGUI/UGUI基础知识[2]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 2 | 引用: 0 | 查看次数: -
Matako[2016-08-30 10:41 PM | | | 219.136.95.115 | del | 回复回复]
视频资源没有了...
小塔[2015-11-17 11:28 PM | 访问 http://www.zaojiahua.com | Mail To:2933682586@qq.com | 58.38.10.69 | del | 回复回复]
看了你的文章,关于项目结构想进一步了解一下,core目录里边的代码我看名称空间是luainterface,那这个里边的代码是不是使用的luainterface这个库的代码,或者加了一些新的东西进去,Plugins打包的是哪些代码,是core里边的内容么,谢谢啦。
回复来自 admin 的评论 admin 于 2015-11-19 12:14 AM 回复
ulua的确基于luainterface
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭