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.

+1 vote
I always get AK_NotInitialized when call GetSourcePlayPosition after upgrading to Wwise 2022.1.3.

Is it a known issue? Thanks.
dans General Discussion par Edward C. (140 points)
edité par Edward C.

1 Réponse

0 votes

Not work in 2022.1.3-2022.1.6
I guess it is caused by the inconsistency of SoundEngine。AK::SoundEngine is not instanced, So,return AK_NotInitialized.
But, can do as this:

//used by Cpp/Blueprint

int32 UAkGameplayStatics::GetSourcePlayPosition(UAkAudioEvent* AkEvent, int32 PlayingID)
{
    if (AkEvent) {
        return AkEvent->GetSourcePlayPosition(PlayingID);
    }
    return -1;
}

//expand UAkAudioEvent

int32 UAkAudioEvent::GetSourcePlayPosition(int32 PlayingID)
{
    SCOPED_AKAUDIO_EVENT_2(TEXT("UAkAudioEvent::PostEvent"));
    auto* AudioDevice = FAkAudioDevice::Get();
    if (UNLIKELY(!AudioDevice))
    {
        UE_LOG(LogAkAudio, Verbose, TEXT("Failed to post AkAudioEvent '%s' without an Audio Device."), *GetName());
        return AK_INVALID_PLAYING_ID;
    }

    if (UNLIKELY(!AudioDevice->IsInitialized()))
    {
        UE_LOG(LogAkAudio, Verbose, TEXT("Failed to post AkAudioEvent '%s' with the Sound Engine uninitialized."), *GetName());
        return AK_INVALID_PLAYING_ID;
    }

    auto* SoundEngine = IWwiseSoundEngineAPI::Get();
    if (UNLIKELY(!SoundEngine))
    {
        UE_LOG(LogAkAudio, Warning, TEXT("Failed to post AkAudioEvent '%s' without a Sound Engine."), *GetName());
        return AK_INVALID_PLAYING_ID;
    }

    auto* ExternalSourceManager = IWwiseExternalSourceManager::Get();
    if (UNLIKELY(!ExternalSourceManager))
    {
        UE_LOG(LogAkAudio, Warning, TEXT("Failed to post AkAudioEvent '%s' without the External Source Manager."), *GetName());
        return AK_INVALID_PLAYING_ID;
    }

    AkTimeMs CurrentPosition = 0;
    auto Result = SoundEngine->GetSourcePlayPosition(PlayingID, &CurrentPosition);
    if (Result == AK_Success)
    {
        return CurrentPosition;
    }
    else
    {
        GEngine->AddOnScreenDebugMessage(-1, 2.f, FColor::Red, TEXT("GetSourcePlayPosition FAILED!"), false);
        return -1;
    }
}

par Sico Y. (160 points)
...