记录并积累开发过程中的小问题。请多指教。
直接从微信复制过来,图片加载不哭出来,代码格式有点乱·····
更多笔记请扫码访问公众号,一起交流~

关于Wwise相信很多人不太了解,那我也不多解释啦,直接到官网了解下就知道它的强大了~
由于项目需要同时播放大量音频,CC的音频组件难以支撑,同时播放数量过多会导致最后播放的音频无法播放,终止音频会发生爆音。所以最终选择了Wwise音频音频
Wwise对Unity和Unreal做了很好的支持,但对CC就···厚此薄彼了·····
只有一个N年前的Demo
https://github.com/wwisesamples/cocos2dx-IntegrationDemo
那咱们也得充分利用起来~
首先下载Demo,利用里面的WwiseWrapper文件,可以自己调整修改~
配个各个平台
windows:
1.添加附加包含目录
2.添加附加库目录
3.在工程中添加文件
Android:
1.修改Application.mk
2.修改Android.mk(可根据需求增加或删除插件)
LOCAL_PATH := $(call my-dir)
#wwise
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 := 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_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 \
#wwise
LOCAL_SRC_FILES +=
…/…/…/Classes/WwiseWrapper.cpp
…/…/…/Classes/WwiseAudio.cpp
…/…/…/Classes/jsb_wwise_audio.cpp \
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 \
#jpush
LOCAL_SRC_FILES += …/…/…/Classes/jpush/JPushBridge.cpp \
LOCAL_STATIC_LIBRARIES := cocos2dx_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module, cocos)
3.修改AppActivity.java
static public AppActivity activity = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activity = this;
}
//Wwise
public static Object getInstance() {
return activity ;
}
ios:
1.在工程中添加文件
2.添加链接库
$(WWISESDK)/iOS/$(CONFIGURATION)-iphoneos/lib/libAkMusicEngine.a
其中红线框起来的是通信功能,debug模式下添加,release模式下不添加
3.添加头文件的搜索路径
4.添加.a文件的搜索路径
$(WWISESDK)/iOS/$(CONFIGURATION)-iphoneos/lib
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();
5.停止
stopAudio(audioID)
{
WwiseAudio.stopAudio(audioID, 222);
}
6.卸载
// Unregister the “Piano” game object
AK::SoundEngine::UnregisterGameObj(GAME_OBJECT_PIANO);
// Unload the sound bank
AK::SoundEngine::UnloadBank(bnkPath, NULL);
WWISE::terminate();