首页 > Personal > cocos2d-x > cocos2d-x: 声音之FMOD
2014
02-09

cocos2d-x: 声音之FMOD

cocos2d-x自带的声音虽说简单的功能足够了,但是需要复杂的功能就不行了,而且不同的平台需要的声音资源文件也不尽相同,因为以前开发PC游戏使用过FMOD,用起来很方便,所以考虑使用FMOD替换声音部分。FMOD可以去官网下载,FMOD Ex Designer用来编辑声音工程有windows和mac版本,FMOD Ex Programmer’s API用来在游戏中集成有多个平台版本。FMOD有多种用户协议,Non-Commercial License是免费的,如果开发免费应用就可以使用,或者购买Commercial License,按收入不同有不同价格。

头文件所有平台都是一样的,要包含api/inc和fmoddesignerapi/api/inc中的头文件。

Windows,工程属性->链接器->常规->附加库目录 需要添加.lib存放目录,目录里需要包含fmodex_vc.lib(或fmodexL_vc.lib)和fmod_event.lib(或fmod_eventL.lib),L是包含debug信息的版本。cpp文件中需要添加
#pragma comment(lib, “fmodex_vc.lib”)
#pragma comment(lib, “fmod_event.lib”)
执行目录需要dll文件fmodex.dll(或fmodexL.dll)和fmod_event.dll(或fmod_eventL.dll)。

Mac,工程属性中Build Phases->Link Binary With Libraries添加libfmodex.dylib和libfmodevent.dylib(或者工程中右键Add Files to加入工程中)。Editor->Add Build Phase->Add Copy Files Build Phase同样添加上面两个文件,Destination为Products Directory。添加lib后修改Build Settings->Search Paths->Library Search Paths去掉\”部分,将路径修改为$(SRCROOT)/开始的相对目录,以便不同电脑使用。

ios,添加libfmodex_iphoneos.a,libfmodex_event_iphoneos.a,libfmodex_iphonesimulator.a,libfmodex_iphonesimulator.a。前两个是ios上使用后面是ios simulator上使用的。Build Settings->Search Paths->Library Search Paths也需要相应修改。

android, 拷贝api/lib和fmoddesignerapi/api/lib下armeabi-v7a和armeabi到工程中,在proj.android/jni/Android.mk第一行LOCAL_PATH := $(call my-dir)后面添加
# fmodex
include $(CLEAR_VARS)
LOCAL_MODULE := fmodex
LOCAL_SRC_FILES := ../../common/platform/android/lib/$(TARGET_ARCH_ABI)/libfmodex.so
include $(PREBUILT_SHARED_LIBRARY)
# fmodex
include $(CLEAR_VARS)
LOCAL_MODULE := fmodevent
LOCAL_SRC_FILES := ../../common/platform/android/lib/$(TARGET_ARCH_ABI)/libfmodevent.so
include $(PREBUILT_SHARED_LIBRARY)
再在include $(BUILD_SHARED_LIBRARY)之前添加
LOCAL_SHARED_LIBRARIES += fmodex
LOCAL_SHARED_LIBRARIES += fmodevent
然后修改src下java文件最后部分为
static {
System.loadLibrary(“fmodex”);
System.loadLibrary(“fmodevent”);
System.loadLibrary(“cocos2dcpp”);
}
android中所有资源文件都在apk包中,fmod没办法直接读取需要的文件,需要调用
FMOD::System::setFileSystem重写相关文件函数,具体方法可以在网上查询。

最后编辑:
作者:wy182000
这个作者貌似有点懒,什么都没有留下。

留下一个回复