接入的版本为Wwise SDK 2017.2.0
首先下载https://github.com/wwisesamples/cocos2dx-IntegrationDemo,借用里面的WwiseWrapper(做些修改),仔细阅读ReadMe***.txt
lua的话自己做些修改就好了
- win
1.添加附加包含目录(对应的Wwise目录)
2.添加附加库目录(对应的Wwise目录)
3.在工程中添加文件
- Android
1.修改Application.mk
2.修改Android.mk(可根据需求增加或删除插件)
这是lua的Android Studio中的,c++的看着修改下路径就好
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
$(call import-add-path,$(LOCAL_PATH)/../../../cocos2d-x/cocos)
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 := ../../../../../Wwise/SDK
WWISESDK := E:/workspace/code/Wwise/SDK
include $(CLEAR_VARS)
#SDK_LIB_DIR := ../../../../../Wwise/SDK/Android_$(TARGET_ARCH_ABI)/$(AK_CONFIG)/lib
SDK_LIB_DIR := ${WWISESDK}/Android_$(TARGET_ARCH_ABI)/$(AK_CONFIG)/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
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)
LOCAL_MODULE := zip
LOCAL_SRC_FILES := $(SDK_LIB_DIR)/libzip.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_ARM_MODE := arm
LOCAL_MODULE := cocos2dlua_shared
LOCAL_MODULE_FILENAME := libcocos2dlua
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../Classes
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../../Classes/pbc
#Wwise
LOCAL_C_INCLUDES += $(WWISESDK)/samples/SoundEngine/Android
LOCAL_C_INCLUDES += $(WWISESDK)/samples/SoundEngine/Android/libzip/lib
LOCAL_C_INCLUDES += $(WWISESDK)/samples/SoundEngine/Common
LOCAL_C_INCLUDES += $(WWISESDK)/include
LOCAL_C_INCLUDES += $(WWISESDK)/samples/IntegrationDemo/Android
#友盟
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../../Classes/analytics \
$(LOCAL_PATH)/../../../Classes/share \
$(LOCAL_PATH)/../../../Classes/Common
LOCAL_SRC_FILES := \
../../../Classes/AppDelegate.cpp \
../../../Classes/PixelSprite.cpp \
../../../Classes/FuncHelper.cpp \
../../../Classes/ButtonEx.cpp \
../../../Classes/ListViewEx.cpp \
../../../Classes/md5.cpp \
../../../Classes/WwiseAudio.cpp \
../../../Classes/WwiseWrapper.cpp \
../../../Classes/JPushBridge.cpp \
hellolua/main.cpp \
../../../Classes/pbc/src/alloc.c \
../../../Classes/pbc/src/array.c \
../../../Classes/pbc/src/bootstrap.c \
../../../Classes/pbc/src/context.c \
../../../Classes/pbc/src/decode.c \
../../../Classes/pbc/src/map.c \
../../../Classes/pbc/src/pattern.c \
../../../Classes/pbc/src/proto.c \
../../../Classes/pbc/src/register.c \
../../../Classes/pbc/src/rmessage.c \
../../../Classes/pbc/src/stringpool.c \
../../../Classes/pbc/src/varint.c \
../../../Classes/pbc/src/wmessage.c \
../../../Classes/pbc/pbc-lua.c
LOCAL_SRC_FILES += \
../../../../cocos2d-x/external/lua/cjson/fpconv.c \
../../../../cocos2d-x/external/lua/cjson/lua_cjson.c \
../../../../cocos2d-x/external/lua/cjson/strbuf.c
#c++转lua
LOCAL_SRC_FILES += \
../../../../cocos2d-x/cocos/scripting/lua-bindings/auto/lua_PixelSprite_auto.cpp \
../../../../cocos2d-x/cocos/scripting/lua-bindings/auto/lua_FuncHelper_auto.cpp \
../../../../cocos2d-x/cocos/scripting/lua-bindings/auto/lua_ListViewEx_auto.cpp \
../../../../cocos2d-x/cocos/scripting/lua-bindings/auto/lua_ButtonEx_auto.cpp \
../../../../cocos2d-x/cocos/scripting/lua-bindings/auto/lua_WwiseAudio_auto.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
#友盟
LOCAL_SRC_FILES += \
../../../Classes/analytics/MobClickCpp.cpp \
../../../Classes/analytics/DplusMobClickCpp.cpp \
../../../Classes/analytics/lua_binding.cpp \
../../../Classes/share/lua_share_binding.cpp \
../../../Classes/share/CCUMSocialSDK.cpp \
../../../Classes/Common/UMCCCommon.cpp
# _COCOS_HEADER_ANDROID_BEGIN
# _COCOS_HEADER_ANDROID_END
#wwise
LOCAL_LDLIBS := -llog -lOpenSLES -landroid -lEGL -lGLESv1_CM
LOCAL_CFLAGS := -DLUA_USE_POSIX
LOCAL_CFLAGS += -DAK_DEBUG -DCOCOS_INTEGRATION
LOCAL_STATIC_LIBRARIES := cocos2d_lua_static
# 引用 bugly/Android.mk 定义的Module
LOCAL_STATIC_LIBRARIES += bugly_crashreport_cocos_static
# 引用 bugly/lua/Android.mk 定义的Module
LOCAL_STATIC_LIBRARIES += bugly_agent_cocos_static_lua
#wwise
LOCAL_WHOLE_STATIC_LIBRARIES += gnustl_static
ifneq ($(AK_CONFIG), Release)
LOCAL_STATIC_LIBRARIES += CommunicationCentral
endif
LOCAL_STATIC_LIBRARIES += AkMusicEngine \
AkSoundEngine \
AkMemoryMgr \
AkStreamMgr \
AkVorbisDecoder \
zip
# _COCOS_LIB_ANDROID_BEGIN
# _COCOS_LIB_ANDROID_END
include $(BUILD_SHARED_LIBRARY)
$(call import-module,scripting/lua-bindings/proj.android)
# 导入 bugly 静态库目录
$(call import-module,external/bugly)
$(call import-module,external/bugly/lua)
# _COCOS_LIB_IMPORT_ANDROID_BEGIN
# _COCOS_LIB_IMPORT_ANDROID_END
3.修改AppActivity.java
package org.cocos2dx.cpp;
import org.cocos2dx.lib.Cocos2dxActivity;
import android.app.Activity;
import android.os.Bundle;
public class AppActivity extends Cocos2dxActivity {
private static Object instance;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
instance = this;
}
public static Object getInstance() {
return instance;
}
}
- ios
1.添加文件
2.添加库
$(WWISESDK)/iOS/$(CONFIGURATION)-iphoneos/lib/libAkMusicEngine.a
其中红线框起来的是通信功能,debug模式下添加,release模式下不添加
3.
4.
5.
6.
- 修改代码
修改WwiseWrapper中的代码,注意不同平台的路径,c++和lua调用的java函数路径等
- 使用
1.在 AppDelegate.cpp中调用 WWISE::initialize(); 初始化
static const AkGameObjectID GAME_OBJECT_PIANO = 100;
2.导入bnk
// Load the sound bank
AkBankID bankID; // Not used
if (AK::SoundEngine::LoadBank("Piano.bnk", AK_DEFAULT_POOL_ID, bankID) != AK_Success)
{
log("LoadBank Piano.bnk error");
}
// Register the "Piano" game object
AK::SoundEngine::RegisterGameObj(GAME_OBJECT_PIANO);
3.使用(播放,停止,暂停等)
//txt文件中的name
int playingID = AK::SoundEngine::PostEvent("Play_7d", GAME_OBJECT_PIANO);
一定要开启update
this->scheduleUpdate();
void HelloWorld::update(float dt)
{
WWISE::update();
}
4.停止
//详细使用请阅读API
//1.PostEvent返回的ID,2.持续毫秒
AK::SoundEngine::StopPlayingID(_index, 200);
5.卸载
// Unregister the "Human" game object
AK::SoundEngine::UnregisterGameObj(GAME_OBJECT_PIANO);
// Unload the sound bank
AK::SoundEngine::UnloadBank("Piano.bnk", NULL);
WWISE::terminate();