了解专题提供了解的最新资讯内容,帮你更好的了解了解。
上篇文章分析了什么是UI树,以及UI树的使用方法,这节会重点分析UI树的内存管理机制以及如何利用UI树对游戏中的UI内存进行合理的管理。 说到UI树的内存管理机制,就不得不提cocos2d-x的内存管理机制——引用计数了,相信只要不是初学者都已经理解了这一块了,这里还是对cocos2d-x的内存管理机制做一个大概的介绍吧。 cocos2d-x采用的是引用计数法作为其内存管理的方法,引用计数法的核心
设想如下场景,这是一个典型的内存合理分配的场景:在一帧内,有若干个函数,每个函数都会创建一系列的精灵,每个精灵都不同,都会占用一定的内存,精灵的总数可能会有1000个,而一个函数只会创建10个精灵这样,创建的精灵只会在这个函数中使用,大致代码如下: for(int i = 0; i < 10; i++) { Sprite* s = Sprite::create(); //-- doSometh
渲染系统是游戏引擎里面最重要的一个模块之一了,如何遍历UI树,如何将UI合理的渲染在屏幕上,如何选择渲染的顺序,这是渲染系统最需要考虑的。其实遍历的顺序就决定了渲染的顺序。 cocos2d-x的渲染函数是通过Node::visit来进行的,首先看看这个函数干了什么吧 void Node::visit(Renderer* renderer, const Mat4 &parentTransform,
智能指针在C++11的标准中已经存在了,分别是unique_ptr,shared_ptr,weak_ptr,其中最常用的应该是share_ptr,它采用引用计数的方式管理内存,当引用计数为0的时候,自动释放内存,但是由于shared_ptr考虑到了线程安全,所以会存在有较大的性能损失。所以在实时游戏开发中,往往不会用到shared_ptr。 在cocos2d-x3.2以及更高的版本中,cocos2
其实最没意思的数据结构就是Map和Vector这两个了,完完全全就是std::map和std::vector上面再加了一层引用计数。当然,这也有好处,就是支持std算法以及支持cocos2d-x的内存管理机制。 看源码可以知道(下均只对Map进行分析,Vector同理) template <class K, class V> class Map { public: // ---------
学习重点:HelloWorld工程,Cocos2D-X引擎框架 在vs2010中打开 学习1中建立好的HelloWorld工程,了解cocos2dx的生命周期和引擎框架。 1,生命周期 学习引擎已经写好了的生命周期,在AppDelegate.h中声明了三个虚函数: applicationDidFinishLaunching : 实现导演(CCDirector)与场景(scene)初始化,appli
这篇文章主要是通过一步一步实现一个功能完善的跑马灯公告来展示ClippingNode的用法并且最终深入ClippingNode的源码,了解其实现原理。 首先,先介绍一下ClippingNode,ClippingNode也叫裁剪节点,能将一些内容通过使用模板裁剪出来显示在界面上,可以实现一些很炫酷的效果。来看看今天要实现的效果 1、ClippingNode类分析 先来看看ClippingNode的声
目的,了解cocos2dx的生命周期,了解cocos2dx的结构.          1 结构 (1)一个视图/窗体  view ( director->setOpenGLView) (2) 一个导演 director (director -> runWithScene()) :职能,场景切换.暂停,继续游戏。 维护机制,维护一个场景堆栈,,可以push, 可以pop。 (3)多个场景  scen
本文的主要内容是根据跑马灯解析ClippingNode实现原理。本文涉及到cocos2dx 3.x的渲染机制以及部分opengl的知识。 首先看看上一篇文章中说到的跑马灯的简单实现: //设置模板 auto stencil = Sprite::create(); //设置显示区域大小 stencil->setTextureRect(Rect(0, 0, 50, 30)); /
注:本文开始,引擎升级到cocos2dx 3.6 在游戏开发过程中,经常会遇到使用计时器的情况,例如:倒计时,定时炸弹等。scheduler是cocos2dx 2.x时代就已经存在的产物,主要用于各种延时函数以及各种每帧运行的函数。本文主要介绍scheduler的API函数以及使用方法。 首先,所有继承Node的类都可以使用scheduler,以下是Node类下相关API的介绍 /**
上篇说到定时器的使用方法,这篇主要分析它的实现原理。 1.哈希链表 cocos2dx封装了一个结构体,叫做UT_hash_handle,只要在自定义的结构体中声明这个结构体变量,就实现了哈希链表,并且能使用一系列的哈希链表专用的宏。这个结构体的具体实现如下: typedef struct UT_hash_handle { struct UT_hash_table *tbl; void
上篇文章分析到了定时器的定义,这篇的重点就是定时器是如何运行起来的。 1.从main中寻找定时器的回调 讲定时器的运行,就不得不触及到cocos2dx的main函数了,因为定时器是主线程上运行的,并不是单独线程的,所以它的调用必然会在main函数中,每帧调用。 以下代码就是win32平台下的main函数 int APIENTRY _tWinMain(HINSTANCE hInstance,
设置资源查找路径 默认是Resources下面查找 std::vector<std::string> searchPath; searchPath.push_back("sd"); //searchPath.push_back("/"); FileUtils::getInstance()->setSearchPaths(searchPath); 如果这样设置那么查找的目录是变成: Resource
伴随着智能手机近几年来的迅速发展,根据来自荷兰游戏数据调研机构 Newzoo 最新的预测,2015年中国移动游戏市场将达到65亿美元(413 亿元)的规模,将超过美国,成为世界第一大移动游戏市场。 此同时,基于PC端的端游和页游虽然被手机游戏分了一杯羹,但依然处在持续发展的状态。然而更重要的是,随着VR&AR等技术的发展,游戏的呈现形式愈发多样化。 简而言之,整个游戏行业的发展已经进入全平台、多样
近期,触控科技在北京国际会议中心举办了以“挑战 变革”为主题的Cocos 2016开发者大会(春季),火石镇CEO卞安做了以“用Cocos开发VR游戏,你需要了解什么?”为主题的精彩演讲。以下为演讲实录: 火石镇CEO卞安 卞安:感谢大家,今天很高兴有机会来Cocos开发者大会为大家分享我们公司在使用Cocos开发VR游戏所积累的经验,我相信在这里关注这个话题的朋友,可能对于使用Cocos还是有很
cocos2d-x 3.0发布有一段时间了,作为一个初学者,我一直觉得cocos2d-x很坑。每个比较大的版本变动,都会有不一样的项目创建方式,每次的跨度都挺大……   但是凭心而论,3.0RC版本开始 环境搭建、项目创建、编译的方式更加人性化了。   现在我们进入正题,一步一步搭建cocos2dx的开发环境        cocos2d-x很多tools都是需要使用Python的,因此我们需要先
官网 Cocos2d-x - World’s #1 Open-Source Game Development Platform Download Cocos2d-x, Cocos Creator and Cocos | Cocos2d-x Windows Setup - Cocos Documentation Asset Our editors and tools 目前有三种方法来创建cocos项
  HTML5标准的定稿,使人们对HTML5技术燃起了更大的热情,HTML5 是唯一通吃PC端、移动端( iOS、Android、Windows Phone )的跨平台语言。由此带来很多革命性的改变,比如降低创业成本、降低技术门槛,借助HTML5技术,Hybrid混合模式也逐渐被认可。但是,你真的了解Hybrid APP吗?        移动端市场的红利,让不少厂商涉足Hybrid开发平台。理论
    各位大佬好,这次我们来了解下Office 365的混合部署,当然有大佬肯定回问了,这东西不是已经很久了吗,而且之前也写过这方面的blog了。确实是这样,但是这次要给各位介绍的混合部署和传统的混合部署还是略微有那么点区别的。这个东西叫做Mini Hybrid,顾名思义这是个mini版的混合部署,他和混合部署还是有一些区别的。     那么,首先mini Hybird的初衷是什么呢?这个其实是
    下边来看一下配置mini hybrid的过程,整个过程其实和配置混合部署的过程非常相似,现在微软已经把混合部署的配置过程做得相当简单了,基本只需要鼠标操作即可,需要说明的是mini hybrid仍然是需要以AD同步为前提的,所以在配置mini hybrid之前,请先做好AD同步,这个就不介绍了。安装的过程可以参考http://blog.51cto.com/mxyit/2071506