You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中如何从服务端JSON文件读取音频URL并实现网络音频播放

解决方案

方案1:复用现有VideoPlayer逻辑(改动量最小)

你现有的VideoPlayer逻辑本身支持播放纯音频文件,无法播放是因为默认配置需要绑定视频渲染纹理,纯音频无视频流导致加载卡住,按如下调整即可:

  • 选中挂载VideoPlayer组件的GameObject,将Render Mode属性设置为None,关闭视频纹理输出
  • 将Audio Output Mode属性设置为Direct,不需要额外绑定组件即可直接输出音频
  • 删掉代码中RawImage相关的无用声明,同时修正笔误:你声明的标题字段是TitleText,代码中错误写为uiTitleText,修改为TitleText.text = data.Title

调整完后原有逻辑无需其他改动即可正常播放纯音频文件。

方案2:改用AudioSource组件(纯音频场景更轻量)

AudioSource确实不支持直接传入URL加载,需要通过UnityWebRequestMultimedia先下载音频流再赋值播放,完整实现代码如下:

using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
using TMPro;

public struct Dataudio
{
    public string Title;
    public string AudioURL;
}

public class getaudio : MonoBehaviour
{
    [SerializeField] TextMeshPro TitleText;
    // 替换原有VideoPlayer,Inspector中挂载场景内的AudioSource组件
    [SerializeField] private AudioSource audioSource;

    string jsonURL = "https://myserver";

    IEnumerator Start()
    {
        using (var request = UnityWebRequest.Get(jsonURL)) 
        {
            yield return request.SendWebRequest();

            if (request.result != UnityWebRequest.Result.Success)
            {
                Debug.LogError($"JSON加载失败: {request.error}");
            }
            else
            {
                Dataudio data = JsonUtility.FromJson<Dataudio>(request.downloadHandler.text);
                // 修正原笔误
                TitleText.text = data.Title;
                // 启动协程加载音频
                StartCoroutine(LoadAudioClip(data.AudioURL));
            }
        }
    }

    IEnumerator LoadAudioClip(string audioUrl)
    {
        // 针对MP4封装的AAC音频,AudioType选MPEG即可,若为MP3格式则选AudioType.MP3
        using (var audioRequest = UnityWebRequestMultimedia.GetAudioClip(audioUrl, AudioType.MPEG))
        {
            yield return audioRequest.SendWebRequest();
            if (audioRequest.result != UnityWebRequest.Result.Success)
            {
                Debug.LogError($"音频加载失败: {audioRequest.error}");
            }
            else
            {
                AudioClip audioClip = DownloadHandlerAudioClip.GetContent(audioRequest);
                audioSource.clip = audioClip;
                audioSource.Play();
            }
        }
    }
}

注意事项

  • 服务器端需要配置对应音频资源的跨域访问权限,否则Unity会加载失败
  • 若存在格式兼容性问题,建议将纯音频文件转码为MP3格式,适配性更强

内容的提问来源于stack exchange,提问作者Bolino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 03:36:10