Cocos2d-x v3.3-RC0 發布說明! - OSCHINA - 中文開源技術交流社區

2021-01-08 開源中國

我們很高興地宣布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);

相關焦點