日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

让cocos2d-x 3.0读取cocostudio中的csb文件

發(fā)布時(shí)間:2023/12/18 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 让cocos2d-x 3.0读取cocostudio中的csb文件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

讓cocos2d-x 3.0讀取cocostudio中的csb文件

??? ? ?現(xiàn)在cocostudio的功能越來越完善,還支持導(dǎo)出二進(jìn)制的csb文件。可惜現(xiàn)在項(xiàng)目使用的還是3.0版本,不支持csb解析,總不至于為了一個解析功能將整個庫升級吧,這也太小題大做了。因?yàn)檫@個csb文件只是將明文的*.ExportJson文件變成二進(jìn)制的,我猜測只是文件解析略有不同,其他使用都無須改變,所以現(xiàn)在我現(xiàn)在的思路是僅替換文件解析的類。


?以一個骨骼動畫為例(項(xiàng)目資源和源碼在文章下面下載),3.0中加載并播放一個骨骼動畫的代碼是:

[cpp]?view plaincopy
  • ArmatureDataManager::getInstance()->addArmatureFileInfo("DemoPlayer.ExportJson");??
  • auto?arm?=?Armature::create("DemoPlayer");??
  • this->addChild(arm);??
  • arm->setPosition(Point(300,?300));??
  • arm->getAnimation()->play("walk");??
  • //?一般放在onExit或析構(gòu)中??
  • ArmatureDataManager::destroyInstance();??

  • ?可以看出,第一行就是加載ExportJson文件,但如果換成"DemoPlayer.csb"打開出錯,為什么呢?前面已經(jīng)說過,3.0不支持了=。=!!


    廢話太多了。。。下面是詳細(xì)步驟:

    1 復(fù)制源碼:跟進(jìn)addArmatureFileInfo()可以發(fā)現(xiàn)CCS資源的解析是由DataReaderHelper類提供的,因此從3.2的cocos/editor-support/cocostudio目錄下復(fù)制CCDataReaderHelper和CocoLoader源文件(.h和.cpp)共四個文件到3.0的cocos/editor-support/cocostudio目錄下替換掉原來文件。


    2 然后在工程中將CocoLoader.h和CocoLoader.cpp添加到cocostudio目錄中:


    3 修改CCDataReaderHelper.cpp中的錯誤。

    ?????? (1) 頭文件路徑不一樣,去除"base/"。如#include "base/CCDirector.h"改為#include "CCDirector.h",把下面兩個CCScheduler.h和ccUtils.h路徑也改了。

    ? ? ???(2) 將Vec2類名改稱Point,共兩處,仔細(xì)看報(bào)錯。(3.2中Point類名又被改成Vec2了,可憐的Point又一次被改名了。。。)

    ? ? ???(3) CCDataReaderHelper.cpp還有十幾處Use of undeclared identifier 'utils'錯誤,這是因?yàn)?.0擴(kuò)展了ccUtils.h,增加了幾個新功能,修改方法見第4條。


    4 跟進(jìn)ccUtils.h中,也可以直接在cocos/2d/support目錄下找到。

    ? ? ???(1) 在.h中加入以下頭文件:

    [cpp]?view plaincopy
  • ???#include?<vector>??
  • ???#include?<string>??
  • <span?style="color:#FF0000;"><strong>???</strong></span>#include?"2d/CCNode.h"??
  • <span?style="color:#FF0000;"><strong>???</strong></span>#include?"ccMacros.h"??

  • ? ?? ? ???(2) 在.h的cocos2dx命名空間內(nèi)加入以下代碼: [cpp]?view plaincopy
  • namespace?utils??
  • {??
  • ????double?atof(const?char*?str);??
  • }??
  • ?? ? ? ?? (3) 在.cpp的cocos2dx命名空間內(nèi)加入以下代碼:
    [cpp]?view plaincopy
  • ????????????namespace?utils??
  • {??
  • #define?MAX_ITOA_BUFFER_SIZE?256??
  • ??????
  • ????double?atof(const?char*?str)??
  • ????{??
  • ????????if?(str?==?nullptr)??
  • ????????{??
  • ????????????return?0.0;??
  • ????????}??
  • ??????????
  • ????????char?buf[MAX_ITOA_BUFFER_SIZE];??
  • ????????strncpy(buf,?str,?MAX_ITOA_BUFFER_SIZE);??
  • ??????????
  • ????????//?strip?string,?only?remain?7?numbers?after?'.'??
  • ????????char*?dot?=?strchr(buf,?'.');??
  • ????????if?(dot?!=?nullptr?&&?dot?-?buf?+?8?<??MAX_ITOA_BUFFER_SIZE)??
  • ????????{??
  • ????????????dot[8]?=?'\0';??
  • ????????}??
  • ??????????
  • ????????return?::atof(buf);??
  • ????}??
  • ??????
  • }??


  • 5 至此就大功告成了,但是如果仍報(bào)CocoLoader與CCDataReaderHelper的鏈接錯誤,那么需要手動在"cocos2dx IOS"的"Build Phases"上手動添加CocoLoader的.h和.cpp文件。下面給出添加步驟:

    (1) 選擇項(xiàng)目目錄下的"cocos2d_libs.xcodeproj",在右邊"build all libs iOS"下面的"cocos2dx iOS"庫(如果要在Mac上運(yùn)行,則選擇"build all libs Mac"下面的"cocos2dx iOS"庫),再選中右邊的"Build Phases"。如下圖:


    ??????? (2) 點(diǎn)開"Compile Headers",再點(diǎn)擊"+"號,添加CocoLoader.h進(jìn)去,此時(shí)h文件應(yīng)該是(356 items)


    ?????? (3) 點(diǎn)開"Compile Sources",再點(diǎn)擊"+"號,添加CocoLoader.cpp進(jìn)去,此時(shí)cpp文件應(yīng)該是(301 items)



    現(xiàn)在應(yīng)該可以編譯并運(yùn)行csb文件了,將DemoPlayer.ExportJson改成DemoPlayer.csb運(yùn)行了看看吧!
    [cpp]?view plaincopy
  • ArmatureDataManager::getInstance()->addArmatureFileInfo("DemoPlayer.csb");??
  • ??
  • auto?arm?=?Armature::create("DemoPlayer");??
  • this->addChild(arm);??
  • arm->setPosition(Point(300,?300));??
  • arm->getAnimation()->play("walk");??
  • //?一般放在onExit或析構(gòu)中??
  • ArmatureDataManager::destroyInstance();??
  • 轉(zhuǎn)載于:https://www.cnblogs.com/Anzhongliu/p/6091954.html

    總結(jié)

    以上是生活随笔為你收集整理的让cocos2d-x 3.0读取cocostudio中的csb文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。