cocos2d-x接入Wwise
接入的版本为Wwise SDK 2017.2.0
首先下载https://github.com/wwisesamples/cocos2dx-IntegrationDemo,借用里面的WwiseWrapper(做些修改)
- win
1.添加附加包含目录
载入超时,点击重试
2.添加附加库目录
载入超时,点击重试
3.在工程中添加文件
- Android
1.修改Application.mk
2.修改Android.mk(可根据需求增加或删除插件)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
ifndef AK_CONFIG
#AK_CONFIG := Profile
AK_CONFIG := Release
endif
ifneq ($(AK_CONFIG), Debug)
NDK_DEBUG := 1
endif
AK_ANDROID := 1
WWISESDK := E:/workspace/Wwise/SDK
include $(CLEAR_VARS)
#SDK_LIB_DIR := ${WWISESDK}/Android_$(TARGET_ARCH_ABI)/$(AK_CONFIG)/lib
SDK_LIB_DIR := ${WWISESDK}/Android_armeabi-v7a/Release/lib
ifneq ($(AK_CONFIG), Release)
LOCAL_MODULE := CommunicationCentral
LOCAL_SRC_FILES := $(SDK_LIB_DIR)/libCommunicationCentral.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
else
LOCAL_EXPORT_CFLAGS += -DAK_OPTIMIZED
endif
include $(CLEAR_VARS)
LOCAL_MODULE := AkMemoryMgr
LOCAL_SRC_FILES := $(SDK_LIB_DIR)/libAkMemoryMgr.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := AkSoundEngine
LOCAL_SRC_FILES := $(SDK_LIB_DIR)/libAkSoundEngine.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := AkStreamMgr
LOCAL_SRC_FILES := $(SDK_LIB_DIR)/libAkStreamMgr.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := AkMusicEngine
LOCAL_SRC_FILES := $(SDK_LIB_DIR)/libAkMusicEngine.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := AkVorbisDecoder
LOCAL_SRC_FILES := $(SDK_LIB_DIR)/libAkVorbisDecoder.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := AkCompressorFX
LOCAL_SRC_FILES := $(SDK_LIB_DIR)/libAkCompressorFX.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := AkPeakLimiterFX
LOCAL_SRC_FILES := $(SDK_LIB_DIR)/libAkPeakLimiterFX.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := zip
LOCAL_SRC_FILES := $(SDK_LIB_DIR)/libzip.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := cocos2djs_shared
LOCAL_MODULE_FILENAME := libcocos2djs
ifeq ($(USE_ARM_MODE),1)
LOCAL_ARM_MODE := arm
endif
#wwise
LOCAL_LDLIBS := -llog -lOpenSLES -landroid -lEGL -lGLESv1_CM
LOCAL_CFLAGS := -DLUA_USE_POSIX
LOCAL_CFLAGS += -DAK_DEBUG -DCOCOS_INTEGRATION
LOCAL_WHOLE_STATIC_LIBRARIES += gnustl_static
#bugly
LOCAL_CPP_EXTENSION := .mm .cpp .cc
LOCAL_CFLAGS += -x c++
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../Classes
#Wwise
LOCAL_C_INCLUDES +=
$(WWISESDK)/samples/SoundEngine/Android
$(WWISESDK)/samples/SoundEngine/Android/libzip/lib
$(WWISESDK)/samples/SoundEngine/Common
$(WWISESDK)/include
$(WWISESDK)/samples/IntegrationDemo/Android
LOCAL_SRC_FILES := hellojavascript/main.cpp
../../../Classes/AppDelegate.cpp
../../../Classes/jsb_module_register.cpp
LOCAL_SRC_FILES +=
../../../Classes/WwiseWrapper.cpp
../../../Classes/WwiseAudio.cpp
../../../Classes/jsb_wwise_audio.cpp
#bugly
LOCAL_SRC_FILES += ../../../Classes/bugly/CrashReport.mm
#jpush
LOCAL_SRC_FILES += ../../../Classes/jpush/JPushBridge.cpp
#Wwise
LOCAL_SRC_FILES +=
$(WWISESDK)/samples/SoundEngine/Common/AkFileLocationBase.cpp
$(WWISESDK)/samples/SoundEngine/Common/AkFilePackage.cpp
$(WWISESDK)/samples/SoundEngine/Common/AkFilePackageLUT.cpp
$(WWISESDK)/samples/SoundEngine/Android/AkFileHelpers.cpp
$(WWISESDK)/samples/SoundEngine/Android/AkDefaultIOHookBlocking.cpp
ifeq ($(USE_ANY_SDK),1)
LOCAL_SRC_FILES += ../../../Classes/anysdk/SDKManager.cpp
../../../Classes/anysdk/jsb_anysdk_basic_conversions.cpp
../../../Classes/anysdk/manualanysdkbindings.cpp
../../../Classes/anysdk/jsb_anysdk_protocols_auto.cpp
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../../Classes/anysdk
LOCAL_WHOLE_STATIC_LIBRARIES := PluginProtocolStatic
endif
LOCAL_STATIC_LIBRARIES := cocos2dx_static
LOCAL_EXPORT_CFLAGS := -DCOCOS2D_DEBUG=2
ifneq ($(AK_CONFIG), Release)
LOCAL_STATIC_LIBRARIES += CommunicationCentral
endif
LOCAL_STATIC_LIBRARIES += AkMusicEngine
AkSoundEngine
AkMemoryMgr
AkStreamMgr
AkCompressorFX
AkPeakLimiterFX
zip
include $(BUILD_SHARED_LIBRARY)
$(call import-module, cocos)
3.修改AppActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Workaround in https://stackoverflow.com/questions/16283079/re-launch-of-activity-on-home-button-but-only-the-first-time/16447508
if (!isTaskRoot()) {
// Android launched another instance of the root activity into an existing task
// so just quietly finish and go away, dropping the user back into the activity
// at the top of the stack (ie: the last state of this task)
// Dont need to finish it again since its finished in super.onCreate .
return;
}
// DO OTHER INITIALIZATION BELOW
s_instance = this;
s_context = this.getApplicationContext();
SDKWrapper.getInstance().init(this);
CAAgent.enableDebug(false);
s_channel = getMetaDataFromAppication(this.getApplicationContext(), "ANDROID_CHANNEL");
if (s_channel == null)
s_channel = "tan8";
//System.out.println("######################channel:" + s_channel);
TalkingDataGA.init(this, "426E9A5F91574F86AFE15FC3A2B2C805", s_channel);
MobSDK.init(this);
}
//Wwise
public static Object getInstance() {
return s_instance;
}
- ios
1.
2.
$(WWISESDK)/iOS/$(CONFIGURATION)-iphoneos/lib/libAkMusicEngine.a
其中红线框起来的是通信功能,debug模式下添加,release模式下不添加
3.
4.
5.
- 使用方法
1.初始化Wwise
initWwise()
{
cc.loader.loadRes("sounds/Init", function (err, asset) {
let path = asset.nativeUrl;
WwiseAudio.init(path);
this.loadBnk();
}.bind(this));
}
2.导入bnk
loadBnk()
{
cc.loader.loadRes("sounds/PianoNote", function (err, asset) {
let path = asset.nativeUrl;
WwiseAudio.loadBank(path);
}.bind(this));
}
3.使用(播放,停止,暂停等)
playAudio(eventName, vol)
{
//WwiseAudio.registerGameObj(this._indexAudioObj);
//let audioID = WwiseAudio.postEvent(eventName, 100);
//WwiseAudio.setVolume(this._indexAudioObj, vol);
let audioID = WwiseAudio.playAudio(this._indexAudioObj, eventName, vol);
this._indexAudioObj++;
return audioID;
}
4.在update中添加
WwiseAudio.renderAudio();
4.停止
stopAudio(audioID)
{
WwiseAudio.stopAudio(audioID, 222);
}
5.卸载(暂未绑定到ts中)
// Unregister the "Piano" game object
AK::SoundEngine::UnregisterGameObj(GAME_OBJECT_PIANO);
// Unload the sound bank
AK::SoundEngine::UnloadBank(bnkPath, NULL);
WWISE::terminate();
推荐阅读: