91238


Addressable Asset System で取得したAudioClipをAudioSourceに渡しても、再生されません。 PlayMode を
Use Asset Databaseに設定すると正常に再生されますが、, Use Existing Buildに変更すると再生されなくなります。  
また、Windowsビルドでも再生されません。  
コンソール上にはエラーメッセージは出ていません。  
なにかお心当たりのことがありましたら何卒ご教示ください。

何か不足がありましたらコメントお願いします。  
ネット上でも同現象の報告が見つからず、大変困っております。  
どうぞよろしくお願いします。

### 試したこと

  1. Addressable Groupのウインドウ上でNew Build > Default Build Script from  
Addressable を実行しました。また、 Clean Build も実行しました。 いずれも状況改善しませんでした。

  2. AudioClipの取得自体に失敗しているのかと考え、DebugLogでコンソールに取得したClipの名前を表示してみました。 しかし、正常なクリップ名がログに表示されました。  
同じタイミングでEditor上のAudioSourceにAudioClipが渡っているか確認すると、Noneのままになっていました。  
AudioClipらしきデータは取得できているが、 audiosource.clip = clip  
の設定が正常に完了できないものと考えています。

  3. AssetBundleCompression のセッティングをUnCompressedに変えてみましたが、変化はありません。

### 実行環境

Unity Version 2021.3.10f1  
Addressables Version 1.19.19

### 該当箇所のコード

main.cs

[code]

    public async UniTask ExecuteAsync(CallInstReference reference, InstRunner runner, CancellationToken cancelToken)
    {
        AudioClip clip = await Addressables.LoadAssetAsync<AudioClip>(clipAddress.Get());
        reference.world.callSoundManager.PlayVoice(clip, duration );
            Addressables.Release(clip);
        }
    
[/code]

callSoundManager.cs

[code]

        public void PlayVoice( AudioClip clip , float duration = 0.2f , bool loop = false)
        {
            Debug.Log(clip.name + " voiceStart"); //currect clip name displayed.
            VoiceTrack.clip = clip; //no clip attached the audioSource in Editor
            VoiceTrack.loop = loop;
            VoiceTrack.Play();
            VoiceTrack.DOFade(1f, duration);
    
        }
    
[/code]


CC BY-SA 4.0
2022-09-21T22:07:14.413
91221
2022-10-04T05:00:00.577
2022-09-22T03:43:23.897
54472
54472
question
unity3d unity2d
Addressable Asset Systemで取得したAudioClips が再生されない


自己解決しました。  
直接

[code]

    AudioClip clip = await Addressables.LoadAssetAsync<AudioClip>(clipAddress.Get());
    
[/code]

と待ち受けていましたが、handle を取り出して別途Taskを待ち受ける必要があったようです。お騒がせしました。

以下コードで正常動作しました。

[code]

    AsyncOperationHandle<T> handle = Addressables.LoadAssetAsync<T>(key);
    await handle.Task; 
    if (handle.Status ==AsyncOperationStatus.Succeeded) result = handle.Result;
    
[/code]


CC BY-SA 4.0
2022-09-22T08:18:30.687
91238
2022-10-04T05:00:00.577
2022-10-04T05:00:00.577
54472
54472
91221
answer