【步兵 经验篇】one step by EOS.

前段时间罗永浩我发布会上出了个,这么个东西,今天说的又更step有关,所以就引用一下。
话说没看过的,不如周末看看这个发布会,我觉得价值远比手机大,春晚都没这么好看,哈哈。

好了,进入正题,今天要说的其实还是和降低耦合有关系,大家可以借鉴。


关于场景

其实一开始我就不是很喜欢cocos中的Scene的存在,因为2d本来就相当一个平面,
是一层一层的layer叠加出来的,感觉有layer就够了,引入了Scene会让我感觉混淆。
比如一个战斗场景,就可以是 地图层、人物层、特效层、ui层 等 来组成的。

但是随着工作经验的增加,虽然我可以不用cocos的Scene,但是还是来抽象出一个Scene类,
用来做资源管理,游戏中各个阶段理好自己的部分,让程序更加清晰。

比如 我游戏中有分为常见的 登录阶段、主界面阶段、核心战斗阶段。
这三个部分 各有特点:
1、登录阶段:只是个过场,简单也好华丽也罢, 进入游戏后,基本很少回来。
2、主界面阶段:ui庞大,图片资源、ui特效、粒子特效 会占用大量的内存。
3、核心战斗阶段:人物、怪物、技能特效等 占地用大力内存。

最理想的情况应该是充分利用内存,进入游戏就加载好所有的资源,然后只进行隐藏和显示,那样玩家会的流畅无比。(ps:当然要加一些动画,来缓解疲劳=、= 比如加个1秒的加载界面~)
然而,事实上除了休想游戏,那个游戏没有加载界面呢? 好了,扯远了。

其实,已经很明显了,登录阶段,进入游戏后(进入主界面之前),所有的资源都应该删掉。
再就是主界面和战斗界面切换的时候也应该释放掉自己的那部分资源。

MainScene:init()
MainScene:onEnter()--在这加载
MainScene:onExit()--在这释放
MainScene:delete()

然后来回切换场景的时候并不释放(登录场景是否),也就是init()会调用一次,delete()一般不会调用,
除非重新初始化整个场景,比如切换用户,清一下数据。


说好的Step

不过这里的Step和Scene的做法实质上没什么区别,都是为了更加方便的掌控流程或者逻辑。
空口无凭,现举个例子,理解一下:

LoginScene.onEnter( LoginStep.Login ) //就走 登录-选角色-进游戏 流程
LoginScene.onEnter( LoginStep.SelectRole ) //就跳过登录的流程,比如返回角色

首先呢,从简单出发,SceneStep 控制场景中的不同切入点。这样的话,他可以是个枚举。
这种情况后者不够明了?展开一下:

function LoginScene:onEnter(step)if step thengotoStep(step)end//...
end//界面登录
function LoginView:login()//...gotoStep(LoginStep.SelectRole)
end

简单情况下,这样就可以用step来通过枚举做一些,

if step == LoginStep.SelectRole thenLoginScene:enterLoginStep()LoginScene:levelSelectRoleStep()
end

之类的处理,到这里本章就结束了…………………………………………………………吗?当然没有!太大材小用了!!!


独立门户

step是抽象为一个类,具有自己的onEnter、onExit、init、delete 的方法!
这样就可以:

local lastStep = nil
function gotoStep(newStep, isDeleteLast)if lastStep thenlastStep:onExit()if isDeleteLast thenlastStep:delete()endendlastStep = newStepnewStep:onEnter() //...
end

//当然亦可以用类似指针数组的方法
newStepObj = self.stepArr[newStep]
if newStep == nil thennewStepObj = self.stepCreateFuncArr[newStep]()self.stepArr[newStep] = newStepObj
end

这样step就具备了,处理更复杂问题的能力,也就是拓展性,比如:
进入游戏让玩家体验下“极品装备,一秒刷爆”的快感,就可以用一个GameScene.NewBie来完成,
(ps:科普newbie =/= 牛b, 是新手的意思 =。=)
因为这可能是70级后东西,而一级的玩家要这些资源何用(假设单机的话),
这时候在onExit中卸载掉,就再合适不过了。而你需要做的仍然是gotoStep(XXXX)。

这种思想还可以适用于更多的地方,把复杂的东西模块话,当有了套路之后,
思路就会清晰明了,而代码也向着精简的方向前进。

本文到这里就结束了…………………………………………………….真的!

See Again~
之前
真爱无价,欢迎打赏~

【步兵 经验篇】one step相关推荐

  1. 【步兵 经验篇】组件模式的特点

    [步兵 经验篇]组件模式的特点 by EOS. 组件模式对u3d的开发者可能并不陌生,因为其框架设计大量的使用了这种模式, 但是cocos却没有使用,不过后来出的js也开始套用这种模式,他能被效仿,自 ...

  2. 【步兵 经验篇】断点续传

    [步兵 经验篇]断点续传 By EOS. 虽然 基于cocos写的,但是也可以用于其他地方,核心是curl库,只要引用就可以实现. 既然curl库本身是有断点续传的接口的,不用岂不可惜? 用途 断点续 ...

  3. 【步兵 经验篇】图片加密之我见

    [步兵 经验篇]图片加密之我见 by EOS. 现在apk满大街飞,直接下载一个apk改后缀名为rar,就可以看到里面的东西,我相信大家都知道, 也就是说,如果资源不加密的话,游戏的美术资源就成了别人 ...

  4. 小程序服务器1兆宽带够用,宽带经验 篇一:200M宽带,真的适合你吗?

    宽带经验 篇一:200M宽带,真的适合你吗? 2019-01-13 10:13:24 13点赞 28收藏 4评论 今天有个朋友问我,我家前两天升级宽带套餐,由100M升级为200M,可是怎么感觉网速没 ...

  5. gamepad android手柄,经验篇,游戏手柄使用教程,刀锋游戏手柄连接安卓苹果手机设置方法...

    经验篇,游戏手柄使用教程,刀锋游戏手柄连接安卓苹果手机设置方法 2020-03-25 11:20:18 1点赞 1收藏 0评论 我相信大部分游戏玩家都使用过游戏手柄,游戏手柄确实带来了很多操作便利,而 ...

  6. 【步兵 工具篇】lzma算法,压缩字节流

    [步兵 工具篇]lzma算法,压缩字节流 by EOS. 本来上周就打算写的,不过孩子连续高烧,住院了一个礼拜.一个礼拜没回家,还写什么博客. 虽然花了不少钱,好在孩子也恢复过来了,继续努力,挣钱养家 ...

  7. 深圳市在职人才引进经验篇2021

    深圳市在职人才引进经验篇2021 前言 开始 登入系统 填写基本信息 容易有疑问的几个事项: 体检与准备材料 上传完材料之后,就可以等待审批结果和后续了 办理过程时间线 1月15日,首次上传资料,开具 ...

  8. 倩女幽魂2服务器维护怎么抢先进,玉玉倩女幽魂新区攻略-经验篇

    玉玉已经发表过一篇新区升级的攻略了. 可以让普通玩家只花一块钱,轻轻松松的到达69级. 练级篇里面提到了60级做一条布袋,很多人可能不满意获得的经验. 这次这篇可以让经验再次扩大,多到开封印就可以秒8 ...

  9. 力创eda 画布大小_立创EDA快速上手经验篇.docx

    立创EDA快速上手经验篇 立创EDA(海外版本叫easyeda)是近年比较流行的一款在线设计EDA(电子自动化)软件.相比早已经完成抢占市场的老牌工具,立创EDA通过"终身免费,在线方便,开 ...

  10. 我参与的一个项目的继续总结:经验篇

    李迟按: 我看了很多关于项目管理的文章,但发现文章说的和我实际上做的,出入很大.后来和同样做项目经理的同事讨论,发现一个秘密:我们只是临时工,临时兼职项目经理.对于项目经理的权力,权利,均是官方套话. ...

最新文章

  1. Sklearn的train_test_split用法
  2. NTU 课程笔记13:线性规划(对偶性)
  3. linux 操作系统中的谷歌浏览器google chrome打不开怎么解决
  4. UVA11212Editing aBook 编辑书稿
  5. oracle 查询spid,查看数据库session的sid来查杀对应系统进程号spid
  6. python和c#交互_python与C#的互相调用
  7. 回顾2016,工作总结!
  8. js 视频插件zyMedia下载和使用方法
  9. python保存表情包_用Python一键保存半佛仙人所有的骚气表情包
  10. 动态修改窗口标题和类名
  11. ffmpeg实战教程(十一)手把手教你实现直播功能,不依赖第三方SDK
  12. bzoj4372 烁烁的游戏
  13. python主成分得分系数矩阵_用spss得出的成分矩阵就是初始因子载荷矩阵吗?成分得分系数矩阵又是什么...
  14. 产业新闻-2006.06.02-05
  15. ID 220970.1-- RAC: Frequently Asked Questions
  16. GaitGAN: Invariant Gait Feature Extraction Using Generative Adversarial Networks论文翻译以及理解
  17. 国内 3 大物联网设备 OTA 服务选型指南
  18. GreenPlum 介绍
  19. flash如何设置、调整、修改图片的透明度
  20. 补足每天的饮食营养,还得数神奇的小麦胚芽

热门文章

  1. bit,byte,b,B,KB的整理
  2. PS标尺和标记线用法的简单记录
  3. Hive性能调优之推测执行
  4. 百度地图精准定位,自定义marker,自定义信息弹出窗口。
  5. 中科磐云 综合渗透测试
  6. 微软windows自带邮箱设置和使用(更改windows10账户绑定邮箱)qq邮箱绑定windows邮箱,163邮箱绑定windows邮箱,阿里云邮箱绑定windows邮箱
  7. 《一个报文的路由器之旅》学习
  8. Win10 通知区域蓝牙图标消失问题
  9. java多数据库开发evn,Java,在多线程evnironments中通过散列统一划分传入的工作
  10. AD9854+STM32正弦波信号发生器