我們很高興地宣布Cocos2d-x v3.3-RC0發布了!
Cocos2d-x v3.3-RC0下載地址:http://cn.cocos2d-x.org/download
關於v3.3各個版本的特性和改動的話,可以參考這篇文檔。
注意事項
lua
在新建工程時,引擎自帶的lua文件會被拷貝到src/cocos目錄下。這樣開發者可以更好地管理所有的所有的lua文件。我們同時提供了cocos/init.lua用於加載引擎自帶的這些lua文件,所以如果你是從舊的引擎升級上來的話,需要刪除對這些自帶lua文件的加載操作:
require "Cocos2d"require "Cocos2dConstants"require "bitExtend"require "DrawPrimitives"require "extern"require "json"require "Opengl"require "OpenglConstants"require "CCBReaderLoad"require "AudioEngine"require 「CocoStudio」require 「StudioConstants」require 「ControllerConstants」require 「ExtensionConstants」require 「NetworkConstants」require 「GuiConstants」require 「experimentalUIConstants」
luaj和luaoc比較特殊,它們不能和別的lua文件一樣默認在cocos/init.lua中加載。因為加載這兩個lua文件會返回一個對象,lua代碼會使用返回的對象進行操作,所以需要替換對應的加載路徑,具體修改如下:
require "luaj" -> require "cocos.cocos2d.luaj"
require "luaoc" -> require "cocos.cocos2d.luaoc"
兼容舊API的lua文件默認沒有被加載上來,如果需要使用這些deprecated API的話,只需要修改src/main.lua的一行代碼來啟用:
``` -- 注釋掉下面這行代碼可以啟用deprecated的API -- CCUSEDEPRECATED_API = true require "cocos.init"
```
wp8
如果希望使用Cocos2dShaderCompiler來預編譯shader的話,需要使用VS2013 with update 3這個版本。
v3.3-RC0新特性
3D:增加了光照,包括平行光、點光源、聚光燈和環境光
新的音頻系統支持增加Mac OS X和Windows的支持
Spine的runtime更新到了最新版本v2.0.18
增加了Application::openURL(),用於打開一個URL連結
增加了AssetsManagerEx,這個模塊是之前的AssetsManger的增強版本
增加了對Tiled Map Editor導出的新地圖類型(staggered tile map)的支持
增加了ClippingRectangleNode,可以用來裁剪矩形區域
Node的schedule/unschedule支持lambda表達式
plugin增加了對Facebook平臺的支持,所有的Facebook的特性都支持了,不過這些API還需要和Facebook的工程師一起改進
新特性詳細說明
光照
為了讓3D物體看起來更真實,引擎在這個版本增加了光照支持。引擎總共支持4種類型光照:
方向光表示一個非常遠的光源,投射的光線是平行的,通常用來模擬太陽光。
下面的代碼可以在場景中添加一個方向光:
auto directionalLight = DirectionLight::create(Vec3(-1.0f, -1.0f, 0.0f), Color3B(200, 200, 200)); addChild(directionalLight);
添加的光源默認是開啟的,可以通過下面的代碼關閉該光源:
directionalLight->setEnabled(false);
你也可以給光源設置一個標記:
directionalLight->setLightFlag(LightFlag::LIGHT0);
這樣只有那些燈光的mask與燈光的標記相與為非零值的3d精靈才能受燈光的影響。
點光源從空間中某點向四周均勻發射有限長度的光線,可以用來模擬向四周發射狀的光源。
聚光燈從某點發射一個圓錐形狀,可以用來模擬檯燈,舞檯燈等。注意,聚光燈比較消耗GPU計算時間。 環境光,向四周發射光線,模擬一個屋子等的環境,說不清楚光線來自哪個方向,四周是均勻的。 注意我們用前向光照渲染算法,光源的數量對計算性能有一定影響。你可以設置shader中支持的最大光源數目,並且把它放在一個配置文件中,如下:
<key>cocos2d.x.3d.max_dir_light_in_shader</key><integer>1</integer><key>cocos2d.x.3d.max_point_light_in_shader</key><integer>1</integer><key>cocos2d.x.3d.max_spot_light_in_shader</key><integer>1</integer>
Spine runtime
Spine runtime更新到了最新版本v2.0.18。這個版本的Spine runtime支持FFD(Free-Form-Deformation),可以讓mesh自由變形。
Spine runtime更新了license,要求引擎不能改動任何源碼,及時發現問題了也不能改,只能給它發pull request,所以大家不要再往引擎提交對Spine runtime的修改,我們不能合併。
新的Spine的測試例子可以參考tests/cpp-tests/Classes/SpineTest/SpineTest.cpp。
AssetsManagerEx
AssetsManagerEx是AssetsManager的增強版本,和AssetsManager相比,AssetsManagerEx有如下優點:
使用一個配置文件,使得可以支持更複雜的升級操作
使用多線程下載
支持斷點續傳
詳細信息請可以參考這篇文檔。
Application::openURL
你可以使用這個函數來打開一個URL連結:
Application::getInstance()->openURL("http://www.cocos2d-x.org/");
ClippingRectangleNode
ClippingRectantleNode是ClippingNode的輕量級版本。和ClippingNode相比,有如下優缺點:
優點
缺點
只能裁剪矩形區域,不能裁剪不規則圖形
auto clipper = ClippingRectangleNode::create(); clipper->setClippingRegion(0, 0, 200, 200); this->addChild(clipper);auto content = Sprite::create("MyPicture.png"); ... clipper->addChild(content);