Cocos2dx 3.0 Spineランタイムを最新にしてデモを表示させる
どうやら3.1からdownload-deps.pyみたいなのがあるらしいのですが、
まだ3.0のまま使っている私です。
皆さんはバージョンいくつ使っているのでしょうか?
私、気になります!
実はデフォルトで入っているSpineは古く表示位は難なく出来るのですが、
若干のバグがあったり安定版とは言えません。
という事でSpineのランタイムを最新に更新して付属のデモを流すところまでやりたいと思います。
ご指摘等ございましたらご連絡下さいm(_ _)m
結果はこんな感じ
ダウンロード
[https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-cocos2dx/3.0:title]
zipで落としてもgithubでやっても何でもいいですとりあえず自分のローカルに落として来れたら
こんな状態になっています。今回はデスクトップに落としてきています
ごちゃごちゃ入っていますが、Cocos2dxに組み込む時に必要なのは2つ
spine-cocos2dx
spine-c
のフォルダだけです。
テスト用にプロジェクト作成
今回は適当にspineTestというプロジェクト作成します
$ cocos new spineTest -p com.your_company.spineTest -l cpp -d ~/Desktop/
Runing command: new
Copy template into /Users/raharu/Desktop/spineTest
Copying cocos2d-x files...
Rename project name from 'HelloCpp' to 'spineTest'
Replace the project name from 'HelloCpp' to 'spineTest'
Replace the project package name from 'org.cocos2dx.hellocpp' to 'com.your_company.spineTest'
色々入れていく
プロジェクトに移動します
$/Users/raharu/Desktop/spineTest
spineがあるフォルダまで移動
$ cd cocos2d/cocos/editor-support/
$ ls -la
total 0
drwxr-xr-x 5 raharu staff 170 5 22 17:57 .
drwxr-xr-x 12 raharu staff 408 5 22 17:57 ..
drwxr-xr-x 55 raharu staff 1870 5 22 17:57 cocosbuilder
drwxr-xr-x 79 raharu staff 2686 5 22 17:57 cocostudio
drwxr-xr-x 57 raharu staff 1938 5 22 17:57 spine
このspineフォルダが古いものなのでリネームして退避させておきましょう。
$ mv spine spine_old
そしたらここに
spine-runtimes-master/spine-cocos2dx/3.0/src/spine/と
spine-runtimes-master/spine-c/src/spine/を入れます。
$ cp -R ~/Desktop/spine-runtimes-master/spine-cocos2dx/3.0/src/spine ./
$ cp ~/Desktop/spine-runtimes-master/spine-c/src/spine/* ./spine/
$ ls spine
AtlasAttachmentLoader.c BoundingBoxAttachment.c MeshAttachment.c SkeletonAnimation.cpp SkeletonRenderer.cpp SlotData.c src
Animation.c Attachment.c Event.c PolygonBatch.cpp SkeletonAnimation.h SkeletonRenderer.h extension.c
AnimationState.c AttachmentLoader.c EventData.c PolygonBatch.h SkeletonBounds.c Skin.c include
AnimationStateData.c Bone.c Json.c RegionAttachment.c SkeletonData.c SkinnedMeshAttachment.c spine-cocos2dx.cpp
Atlas.c BoneData.c Json.h Skeleton.c SkeletonJson.c Slot.c spine-cocos2dx.h
2dフォルダに移動します cd cocos2d/cocos/2d/ ここにspine-runtimes-master/spine-c/include/spine をコピーします
$ cd ~/Desctop/spineTest/cocos2d/cocos/2d/
$ cp -R ~/Desktop/spine-runtimes-master/spine-c/include/spine ./
$ ls spine
Animation.h Atlas.h AttachmentLoader.h BoundingBoxAttachment.h MeshAttachment.h SkeletonBounds.h Skin.h SlotData.h
AnimationState.h AtlasAttachmentLoader.h Bone.h Event.h RegionAttachment.h SkeletonData.h SkinnedMeshAttachment.h extension.h
AnimationStateData.h Attachment.h BoneData.h EventData.h Skeleton.h SkeletonJson.h Slot.h spine.h
そしたらリソースのディレクトリに移動してリソースをコピーします
$ cd ~/Desktop/spineTest/Resources/
$ cp -R ~/Desktop/spine-runtimes-master/spine-cocos2dx/3.0/example/Resources/* ./
$ ls
CloseNormal.png HelloWorld.png fonts ipad-retina iphone-retina
CloseSelected.png common ipad iphone
Classesの下に移動します
$ cd ~/Desktop/spineTest/Classes/
元々のAppDelegate.hとAppDelegate.cppが居ますがこれら競合するので削除しておきます。
$ rm ./AppDelegate.h
$rm ./AppDelegate.cpp
Classesの下に必要なファイルをコピーします
$ cp ~/Desktop/spine-runtimes-master/spine-cocos2dx/3.0/example/Classes/* ./
$ ls
AppDelegate.cpp AppMacros.h GoblinsExample.h HelloWorldScene.h SpineboyExample.h
AppDelegate.h GoblinsExample.cpp HelloWorldScene.cpp SpineboyExample.cpp
こんな感じになっているはずです。
xcodeで最新のソースを読み込ませる
xcodeを起動して先ほど追加したファイルを読み直します。
2d/spineフォルダ
editor-support/spineフォルダ
Classesフォルダ
Resourceフォルダ
Android.mkファイルの作成
上記でiOSはビルドが通ると思いますが、Androidはmakeファイルが無いためエラーで落ちます。 なのでeditor-support/spineにAndroid.mkファイルを作ります。
LOCAL_PATH := $(call my-dir)
hnclude $(CLEAR_VARS)
LOCAL_MODULE := spine_static
LOCAL_MODULE_FILENAME := libspine
# フォルダ以下のcpp&cのファイル名をすべて入れる
LOCAL_SRC_FILES := PolygonBatch.cpp \
SkeletonAnimation.cpp \
SkeletonRenderer.cpp \
Animation.c \
AnimationState.c \
AnimationStateData.c \
Atlas.c \
AtlasAttachmentLoader.c \
Attachment.c \
AttachmentLoader.c \
Bone.c \
BoneData.c \
BoundingBoxAttachment.c \
Event.c \
EventData.c \
extension.c \
Json.c \
MeshAttachment.c \
RegionAttachment.c \
Skeleton.c \
SkeletonBounds.c \
SkeletonData.c \
SkeletonJson.c \
Skin.c \
SkinnedMeshAttachment.c \
Slot.c \
SlotData.c \
spine-cocos2dx.cpp
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/..
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../2d \
$(LOCAL_PATH)/..
LOCAL_CFLAGS += -Wno-psabi
LOCAL_EXPORT_CFLAGS += -Wno-psabi
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
include $(BUILD_STATIC_LIBRARY)
$(call import-module,2d)
使用する場合はproj.android/jni/Android.mkに追加
~~~~~~
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
# 追加
LOCAL_WHOLE_STATIC_LIBRARIES += spine_static
~~~~~~
$(call import-module,extensions)
# 追加
$(call import-module,editor-support/spine)
以上になります。
Cocos2dx 3系の安定版が出る事を切に願って居ます!お願いします!お願いします!