Questions et réponses de la communauté

Bienvenue sur le forum de questions et réponses d'Audiokinetic, propulsé par la communauté. C'est l'endroit où les utilisateurs de Wwise et Strata s'entraident. Pour obtenir une aide directe de notre équipe, veuillez utiliser la page « Tickets de soutien ». Pour signaler un bug, utilisez l'option Bug Report dans l'Audiokinetic Launcher. (Veuillez noter que les rapports de bug soumis au forum questions-réponses seront rejetés. L'utilisation de notre système de rapport de bug dédié garantit que votre rapport est vu par les bonnes personnes et a les meilleures chances d'être corrigé.)

Pour obtenir rapidement les meilleures réponses, suivez ces conseils lorsque vous posez une question :

  • Soyez précis : qu'essayez-vous de réaliser ou quel est le problème spécifique que vous rencontrez ?
  • Pensez à inclure les détails importants : incluez des détails tels que les versions de Wwise et du moteur de jeu, le système d'exploitation, etc.
  • Expliquez ce que vous avez essayé de faire : indiquez aux autres les mesures que vous avez déjà prises pour essayer de résoudre le problème.
  • Concentrez-vous sur les faits : décrivez les aspects techniques de votre problème. Se concentrer sur le problème aide les autres personnes à trouver rapidement une solution.

0 votes

In using AkEvent without AkComponent in seqeuncer, Travelling other level with cancelling Event occures game crash in packaged game.

Because PostEvent with DUMMY_GAMEOBJ have not registered to the CallbackManager, CancelEventCallbackCookie in SectionBeingDestroyed is ignored. 
*see FAkAudioDevice::PostEvent

I fixed this issue with following code.

*** Wwise/Source/AkAudio/Private/AkAudioDevice.cpp
***************
*** 1125,1130 ****
--- 1125,1157 ----
  return PostEvent(in_pEvent->GetName(), in_pActor, in_uFlags, in_pfnCallback, in_pCookie, in_bStopWhenOwnerDestroyed);
  }
 
+ //---------- begin code ------------- 
+ template<typename FCreateCallbackPackage>
+ AkPlayingID FAkAudioDevice::PostEvent(
+ const FString& in_EventName,
+ AkGameObjectID gameObjID,
+ FCreateCallbackPackage CreateCallbackPackage
+ )
+ {
+ AkPlayingID playingID = AK_INVALID_PLAYING_ID;
+ 
+ if (m_bSoundEngineInitialized && CallbackManager)
+ {
+ auto pPackage = CreateCallbackPackage(gameObjID);
+ if (pPackage)
+ {
+ playingID = AK::SoundEngine::PostEvent(TCHAR_TO_AK(*in_EventName), gameObjID, pPackage->uUserFlags | AK_EndOfEvent, &FAkComponentCallbackManager::AkComponentCallback, pPackage);
+ if (playingID == AK_INVALID_PLAYING_ID)
+ {
+ CallbackManager->RemoveCallbackPackage(pPackage, gameObjID);
+ }
+ }
+ }
+ 
+ return playingID;
+ }
+ //---------- end code ------------- 
+ 
  /**
   * Post an event to ak soundengine by name
   *
***************
*** 1150,1156 ****
--- 1177,1189 ----
  if (!in_pActor)
  {
  // PostEvent must be bound to a game object. Passing DUMMY_GAMEOBJ as default game object.
+ #if 1 
+ return PostEvent(in_EventName, DUMMY_GAMEOBJ, [in_pfnCallback, in_pCookie, in_uFlags, this](AkGameObjectID gameObjID) {
+ return CallbackManager->CreateCallbackPackage(in_pfnCallback, in_pCookie, in_uFlags, gameObjID);
+ });
+ #else
  return AK::SoundEngine::PostEvent(TCHAR_TO_AK(*in_EventName), DUMMY_GAMEOBJ, in_uFlags, in_pfnCallback, in_pCookie);
+ #endif
  }
  else if (!in_pActor->IsActorBeingDestroyed() && !in_pActor->IsPendingKill())
  {
*** Wwise/Source/AkAudio/Public/AkAudioDevice.h
***************
*** 1225,1230 ****
--- 1225,1239 ----
      FCreateCallbackPackage CreateCallbackPackage
    );
 
+ //----------------BEGIN CODE
+   template<typename FCreateCallbackPackage>
+   AkPlayingID PostEvent(
+     const FString& in_EventName,
+     AkGameObjectID gameObjID,
+     FCreateCallbackPackage CreateCallbackPackage
+   );
+ 
+ //----------------END CODE
 
    // Overload allowing to modify StopWhenOwnerDestroyed after getting the AkComponent
    AKRESULT GetGameObjectID(AActor * in_pActor, AkGameObjectID& io_GameObject, bool in_bStopWhenOwnerDestroyed );

 

dans General Discussion par Takashi S. (100 points)

Please sign-in or register to answer this question.

...