[从零开始做3D卡牌] 一. 客户端整体设计

  大三开始接触U3D,工作后又转去Cocos。最近工作室想要攻坚一下U3D,于是又重新接触了U3D开始做demo。花了4个月,学习加制作完了一个mmo的demo,刚做完移动和战斗同步,当然,资源都是现成的。然而,突然接到通知后面立的项目应该是3D卡牌,得,重头在来吧。准备按进度慢慢更新,记录一下整个制作demo过程的设计和心得,也趁这个机会把之前demo制作中设计的很烂的部分和遇到的问题重新改一遍,加油。之前mmo demo的心得也慢慢记录到博客里,先给自己挖几个坑。

  3D卡牌客户端技术方案:

  开发工具: Unity 2017.2.0f3

  开发语言: C#(实现基础框架,网络库以及控件支持)+ Lua(业务逻辑)

  UI:FairyGui(谷主大神开发,编辑器适合设计人员直接使用,减少前段开发量)

 (原生生成是Xml格式,后续可以考虑制作成二进制文件,优化读写)

  网络协议: Protobuf

  C#和Lua交互: ToLua

  资源格式: ab包 lz4

  内更新以及Patch机制:版本递增增量更新,Patch考虑使用推送Lua代码的格式,动态修改内存中的lua table。

  注释规范: Lua就按照LuaDoc的注释规范来


  具体设计:

   C# 层:实现启动类,网络层,内更新方案,资源加载以及Lua设置GameObject属性的接口。

   Lua层:core+game+utils   (core为框架(实现基类),game游戏层,utils常用函数层(搬过来的轮子))

                core = Base(基类,如BaseScene,场景基类)+常用工具类(如eventSystem,对象池这种)

                game =  n* Element(要素,实现功能的非UI要素)

                           + n* Module(游戏模块,由于是卡牌,主要以UI为主)

                           + Global(全局变量和函数)

                ---------------------------------------------------------------------------------------------------------

                 Element(以Scene举例) = SceneManager(管理场景单例) + SpecialScenes(基于BaseScene的各种实现)

                 Module = Controller (管理器,声明使用data/proxy/view等,和其他模块的依赖关系,可以访问anything)

                               + Data(模块数据,提供模块数据类型和数据接口,data不可主动访问别的任意内容)

                               + View(UI界面,可以和管理类交互,可以访问修改data,可以访问proxy)

                               + Proxy(网络交互,收发协议,可以访问修改data)

                               + Const(常量,试实际情况考虑是否可以和data合并)

                               (一个模块除了Controller,别的均可以缺省)

                               (文件之间交互无直接访问权限是均使用eventSystem)

                 Global = GlobalVar+GlobalFunc(就这两文件就OK了,由于Lua太随意了,所以通过__newIndex方法杜绝其他地方写入global)

     

  由于还没开动,纯脑补,先写这么多,后续试实际开发修改设计结构(无特殊情况应该不改了,flag) 


版权声明:本文为caomx0125原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。