四、音频播放

一、相关逻辑

在登录代码中调用,资源加载代码,然后再资源加载代码中调用。

1、登陆方法中:

单例类音频调用自己的方法,然后传入配置代码中的常量

2、音频播放代码中:


首先设置为一个单例类,然后初始化一下

写一个播放声音的方法,传入参数:名称和循环条件(Bool默认循环因为是背景音乐)

然后调用资源加载中的加载音频方法

如果,当前音频组件上为空 | | 播放的音频名字不是加载出来的音频名字

那么就把加载出来的音频名字赋值给这个组件,参数也赋值给循环

最后播放声音

3、资源加载代码:

这里使用的是一个字典,用于存储路径和音频

在这个方法中,类型是一个音频类型,那最后需要返回一个音频类型的值

这个方法接受两个参数(路径、缓存)

首先把这个需要返回的值置为空

判断一下,如果在字典中没有获取到路径和音频

那么就重新加载 赋值给这个音频,并且

缓存为真,就把这个路径和音频 添加到这个字典中

这么做的好处是,需要就从字典中调用一次,不用重复加载。

最终返回的au音频被声音播放代码调用

二、优化代码

1、前言

在很多地方可能都需要对这个音频代码进行调用

那每一次进行调用单例类,然后在调用单例类中的方法,就会很麻烦

解决:把这些功能代码抽象成一个总的

把这些单例类写进去,那么在其他地方就可以优化一下了

继承这个公共的单例类

在初始化函数中,直接复用单例类中的函数方法

那么这个代码就可以改一下了。

把instance直接删除

2、动画循环播放

效果:当玩家一直处于UI这个界面,要保持这个龙的持续动画效果

在龙这个物体上,挂在一个循环代码。

代码如下:

设置为私有,然后最初获取这个组件。

在一开始延迟执行这个动画效果

而这个InvokeRepeating方法。类似于延迟循环。

//飞龙循环动画
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LoopDragonAni : MonoBehaviour
{
    private Animation ani;

	private void Awake()
	{
		ani=transform.GetComponent<Animation>();
	}
	private void Start()
	{
		if (ani != null)
		{
			//方法名、延迟时间、重复频率
			InvokeRepeating("PlayDragonAni", 0, 20);
		}
	}
	private void PlayDragonAni()
	{
		if (ani != null)
		{
			ani.Play();
		}
		
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值