今回は、cocos2dx v2.2.6のソースをv.3.6にする経過です。
以下のサイトを参考にさせていただいています(ありがとうございます!)。
cocos2d-x version2.2.3からversion3.2rc0への移行メモ - よく寝てちょっと食べる
http://d.hatena.ne.jp/laynts/20140804/p1
cocos2d-x v2.2からv3.3への移行
http://miyano-harikyu.jp/sola/devlog/2014/11/10/post-265/
【cocos2dx】モーダルレイヤーを作成する。 |
albatrus.com http://albatrus.com/main/cocos2d/6318
移行作業は、v2.2.6のコードをv3.6をclassesに突っ込み、
データをResourceに突っ込んでおもむろにビルド。
エラーやワーニングが出たところで、各サイトを参考にしながら修正していきました。
- AppDelegateについて
初期化の処理が割と変わっているので、前のソースを上書きする前に取っておいて、
そこだけ書き換えたほうがいいでしょう。
- 大まかに修正していく
まずはプレフィックス(前置詞)であるCCを置換で削除すればいいや、と考えるとハマります。
USING_NS_CCという記述があったりするので気をつけるのと、ccpとかのマクロを先に置換しておいたほうがいいですね。
cocos2dxのv3.6は親切なことに「deprecated(この関数は非推奨だよ)」というワーニングを出してくれるように
なっているので、deprecatedが出たら、
その関数名を選択して右クリック > open declaration (F3キー)
を押すことで定義部分に飛ぶことができ、そこで置き換える関数名が分かります。
大半はそういう感じで置き換えていけますが、CCStringなど周辺を見ながら
慎重に変えないといけない部分もあるので、それは残しつつ、まずは大雑把に修正します。
ワーニングが出る関数は、置き換えないでもしばらくは使えると思いますが、
(CCのプリフィックスを取らなくてもそのままいける配慮がされてます)
後々のために置き換えていったほうがいいでしょう。
- cocos2dフォルダに出るエラー
ここでひとつ注意したいのが、エラーがプロジェクトの中の「cocos2dフォルダ」にも出る
ということです。
「ライブラリに不具合が! また調査対象が増えた…」みたいな感じで焦りますが、
どうやらプロジェクトのソースのエラーが、なぜかライブラリの定義部分に出る症状らしく、
プロジェクトのコードを修正すればあっさりとエラーは消えてくれます。
- 削除されたdefine
一部あって、それは前の2.2.6のワークスペースに戻って、open declaration すれば定義内容が
わかるので持ってきます。
具体的には、メニュープライオリティ関係の kCCMenuHandlerPriority が未定義になっていました。
(3系からはmenuの処理が変わって設定しなくても良くなったようです)
こんな感じで進めています。
ちなみにv3系からbox2dは廃止になり、Chipmunk2Dが採用されたようです。
(外部から入れられるとは思いますが)