cocos2d-x接入Wwise

接入的版本为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();

猜你喜欢

转载自my.oschina.net/losacos/blog/1607766