Unity2D教程:事件顺序、音乐播放、载入资源、游戏暂停

31 篇文章 43 订阅
28 篇文章 11 订阅

关注专栏,持续更新哦

教程总目录


全是自己总结的干货

事件顺序

当一个GameObject首次Active=true后,会先触发Awake函数,再触发Start函数,之后每帧触发Update函数。

不管是在游戏内通过SetActive(true)来激活,还是本身已经激活,触发的顺序都为:Awake,OnEnable,Start。之后每次SetActive(false)触发OnDisable,每次SetActive(true)触发OnEnable。

音乐播放

游戏内部音乐从时间长度分为两种:短音乐和长音乐。

  • 短音乐通过获取AudioSource组件,再通过该组件的PlayOneShot(AudioClip)来播放(PlayOneShot没有现成的方法去暂停)。
  • 长音乐则考虑到暂停等因素,设置AudioSource的clip为指定AudioClip后,通过Play()方法播放。之后可以通过Pause暂停,UnPause继续。
  • Stop()之后相当于关闭了,再次播放需要再次调用Play(),且会重新开始。
  • 通过isPlaying来获取是否在播放。
  • 想要不暂停音乐进度达到静音的效果,只需要设置mute为true(静音)
  • 另外可以通过设置volume来改变音量(0到1)
// 参考
// 播放相关
    static AudioSource audioSource;
    static AudioSource audioOneShot;

    static public void PlayAudioOneShot(AudioClip audioClip)
    {
        audioOneShot.PlayOneShot(audioClip);
    }
    static public void PlayAudio(AudioClip audioClip)
    {
        audioSource.clip = audioClip;
        audioSource.Play();
    }
    // 设置音量
    static public void SetAudioVolume(float volume)
    {
        audioSource.volume = volume;
    }
    // 设置静音
    static public void SetAudioMute(bool ifMute)
    {
        audioSource.mute = ifMute;
    }

载入资源

很多时候我们不想通过public再一个个拖进script组件的方式得到资源对应的对象。这个时候就需要载入资源了。

在Assets下面创建一个叫Resources的文件夹,Build的时候会将Resources下的资源自动包进去。

可以在代码内部通过(AudioClip)Resources.Load("Audio/XXX")导入AudioClip对象
通过Resources.Load<Sprite>("Image/Button");导入Sprite对象。

导入其他资源的时候可以自己试试类似的方法。

游戏暂停

一般是通过Time.timeScale来达到效果。设置为0就是暂停,设置为1就是正常。

其实可以看成是改变Time.deltaTime来到达效果。因为游戏内部物体的运动都是基于Time.deltaTime的,另外倒计时也可以通过timer+=Time.deltaTime实现。

但是不基于Time.deltaTime的是没办法通过这个停止的,例如Update函数还是会每帧都进行。

下面给一个可以暂停音乐的暂停方法:

// 参考
	public void TimeManager(float scale)
    {
        Time.timeScale = scale;
        if (scale == 0)
        {
            if(audioSource.isPlaying)
                audioSource.Pause();
        }
        else
        {
            if (!audioSource.isPlaying)
                audioSource.UnPause();
        }
    }
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值