【版本发布】Cocos2d-x v3.4正式发布!

大家好,很高兴告诉大家Cocos2d-x 3.4 Final版本已经发布了!

下载
http://cn.cocos2d-x.org/download#anchor2

3.4版本新特性

视锥体裁剪
视锥体裁剪意味着只有视锥体内的对象才会被发送至图形硬件参与渲染,同时,在3D世界中,也只有可见物体的顶点等渲染数据被保存在显存中,所以,它可以潜在地提高应用程序的性能。

统一的渲染流程
2D和3D对象的渲染流程已经被统一起来了。这样将Sprite、Label、Particle添加为Sprite3D或者Billboard的子结点之后,就可以将它们统一在3D空间中渲染。它可以更加轻松地实现Blob阴影,3D粒子,以及战斗伤害文字的显示这些效果。示例如下:

auto billboard = Billboard::create();
auto label = Label::create();
label->setString("+100");
billboard->addChild(label);
```


更小的包体积
在iOS和Android移动平台上,系统网络库取代了libcurl,这使得游戏包更加轻巧。使用cocos new命令创建的cpp游戏包体积比以前更小。
iOS: IPA包从5.6M减小到4.3M
Android:动态库从6.1M减小到4.0M,APK包从2.9M减小到2.0M。


自定义内存分配器
自定义内存分配器可以提供如下的功能:
提高内存管理性能
减少内存碎片
支持内存分析
CC_ENABLE_ALLOCATOR宏可以控制自定义分配器的开启和关闭。现在的内存分配策略中,包括了Default Allocator,Fixed Block Allocator,General Allocator以及Pool Allocator。根据不同情况,可以选择对应的分配器策略。


Cocos Package Manager
Cocos Package Manager是一个引擎扩展模块化框架,其服务于Cocos2d-x的扩展的开发和使用流程。当扩展开发出来后,可将其上传到服务器,并用于游戏开发中。使用引擎扩展的工作流非常简单明了。以GAF为例,使用步骤如下:
创建一个工程:cocos new -l cpp
下载并安装GAF扩展:cocos package install gaf
进入游戏目录
添加GAF扩展:cocos framework add gaf
所有的步骤就都完成了,GAF已经被安装到包文件夹中,可以用于游戏工程中了。


其他
UI图标内置灰色效果以减少资源的使用
异步加载Sprite3D
升级LuaJIT到v2.0.3
升级libcurl到v7.39.0
使用CC_USE_CULLING将裁剪变为可选的
修复多个bug


更多信息
更多信息请查看
https://github.com/cocos2d/cocos2d-x/blob/v3/docs/RELEASE_NOTES.md,更多关于新API的信息。
https://github.com/cocos2d/cocos2d-x/blob/v3/CHANGELOG
如果您能够帮助我们测试这个版本,或者反馈bug,我们将不胜感激。感谢!

一个问题,在例子里面,我添加了一个2d精灵,并绕x轴旋转90度到xz平面,代码如下

auto img = Sprite::create("Images/blocks.png");
img->setRotation3D(Vec3(-90,0,0));
img->setPosition(0, -1);
_layer3D->addChild(img);

之后变成了这样


他会把3d模型给盖住了。。
3d模型是在2d精灵之后加入的。。这个情况下我要怎么处理才能让3d精灵显示在2d精灵之前

视锥体裁剪怎么用

是不是默认就是使用视锥体裁剪来渲染

Cocos Package Manager 这个如何使用了?
如何开发一个扩展 哪儿有文档?要遵循什么规则了

是通过CC_USE_CULLING控制的,

#if CC_USE_CULLING
    // camera clipping
    if(!Camera::getVisitingCamera()->isVisibleInFrustum(&this->getAABB()))
        return;
#endif
```

:14: :14: :14: :14: :14: :14: :14: :14:

通过调整img的globalZ值。

这个并不是final版本的,所以现在还没有教程,如果想了解扩展开发相关内容,可以到quick区找廖大。

— Begin quote from ____

引用第6楼偶尔e网事于2015-02-04 10:23发表的 回 1楼(flamefox) 的帖子 :
通过调整img的globalZ值。 http://www.cocoachina.com/bbs/job.php?action=topost&tid=284317&pid=1236937

— End quote

最后我是这样解决的。。不调整zorder了。。

auto back = Sprite3D::create();  // create an empty node    auto img = Sprite::create("Images/blocks.png");     _layer3D->addChild(back);       img->setRotation3D(Vec3(-90,0,0));      back->addChild(img);

脚本lua 的print 打印table类型时不显示table的地址,希望能修复

你这3.4版本 的luajit能解决编译lua脚本兼容arm64的问题不

现在就卡在这了,去网上下载了个的uajit 2.1然后编译luajit.a报错,现在不知道要怎么搞了

cocod2dx版本升级太快了,并且一升级很多方法接口都改了,太费事了

不能渲染3D地形,就算能渲染3D模型能有多大意义

这样也是可以的,只是会感觉上会比较奇怪。2d纹理必须要挂在一个空的Sprite3D上,这有点强带规则了。

可以直接使用如下方式进行打印。

cclog("%p",yourtable)

```

目前还不能够很好的支持,但是你可以参考这篇文章:

http://blog.csdn.net/odiecn/article/details/42499233

3.x系列都是兼容的。有什么接口是改了的吗?感谢您的反馈。

感谢您对Cocos2d-x 3d功能的关注,相信3d功能会发展进步很快的。您也可以提出您的需求。感谢~

我已经按他的方法整过一次了,卡在编译上,有些定义找不到,我看了下那些东西的定义,要定义了宏LJ_52才行,但我在windows编译没问题,也没这个
recff_rawlen和lj_cf_rawlen,不明白为什么跑到mac os下编译就要这些东西,而且还编译不了报错,是不是luajit要lua 5.2才可以

我是cocos2dx3.3 final,xcode 是6.1.1

我是将git下的luajit复制到cocos2d-x对应的luajit路径下
之后将附件里的shell脚本替换目录下存在的build_ios.sh脚本,运行该脚本的

结果报这个错,麻烦侠看下
./lj_recdef.h:224:1: error: use of undeclared identifier ‘recff_rawlen’
recff_rawlen,

./lj_libdef.h:17:3: error: use of undeclared identifier ‘lj_cf_rawlen’; did you
mean ‘lj_cf_rawset’?
lj_cf_rawlen,
^~~~~~~~~~~~
lj_cf_rawset

不好意思,这个我也不清楚,你直接联系他本人吧。