目录

[Unity]播放音频卡顿问题

记录一个问题:

游戏内播放完音频A再去循环播放音频B,在协程里使用等待n秒来实现拼接,发现在个别手机上会有卡顿的问题,盲猜是和帧率有关。

这是最初的实现方案:

cs 复制代码
    IEnumerator IEPlayAudio()
    {
        if(ASOnBeginDrag != null)
        {
            AudioClip clip = ASOnBeginDrag.clip;
            if(clip != null)
            {
                float m_AudioLen = clip.length;
                ASOnBeginDrag.Play();
                yield return new WaitForSeconds(m_AudioLen);
                if (ASOnDrag != null)
                {
                    ASOnDrag.Play();
                    ASOnDrag.loop = true;
                }
            }
        }
        yield return null;
    }

这是修改后的代码:

cs 复制代码
    void PlayBeginDragAudio()
    {
        if(ASOnBeginDrag != null)
        {
            ASOnBeginDrag.Play();
            if (ASOnDrag != null)
            {
                //使用Audio System绝对时间来处理音频拼接问题
                ASOnDrag.PlayScheduled(AudioSettings.dspTime + m_AudioLen);
                ASOnDrag.loop = true;
            }
        }
    }

AudioSourec.PlayScheduled(AudioSettings.dspTime + timeInterval);

表示在当前Audio System绝对时间之后的timeInterval秒,来播放;同时想要停止这个操作只需要AudioSourec.Stop()即可。

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
张屿秋3 小时前
在Unity中,如果物体上的脚本丢失,可以通过编写一个自定义编辑器脚本来查找并删除这些丢失的组件
unity·编辑器·游戏引擎
闪电麦坤9516 小时前
Unity:Simple Follow Camera(简单相机跟随)
unity·游戏引擎
茶本无香16 小时前
Java异步编程中的CompletableFuture介绍、常见错误及最佳实践
java·future·异步·常见错误
一个程序员(●—●)17 小时前
xLua环境控制+xLua的Lua调用C#的1
开发语言·unity·c#·lua
帮帮志17 小时前
05.unity 游戏开发-3D工程的创建及使用方式和区别
3d·unity·游戏引擎
__lost18 小时前
C++20的协程简介
c++20·协程
闪电麦坤9518 小时前
Unity:标签(tags)
unity·游戏引擎
GoMaxAi1 天前
智能体(Agent)系统源码解析:AI 自动化办公的未来
人工智能·unity·自动化
闪电麦坤951 天前
Unity:销毁(Destroy)
unity·游戏引擎
程序猿多布1 天前
Unity UGUI使用手册
unity