42、音效管理器开发
导入资源
整理一下GameManager.cs,因为这个脚本要在两个场景中都共用,所以需要把CurrLV相关的移植到LVManager.cs中去,这里就不显示了,说下如何共用,首先在OtherManagers中将GameManager脚本组件移除,然后更新代码
using System;
using UnityEngine;
public class GameManager : MonoBehaviour
{
public static GameManager instance;
public GameConf GameConf
{
get; private set;
}
private void Awake()
{
if (instance == null)
{
instance = this;
GameConf = Resources.Load("GameConf");
// 保证一个唯一性
DontDestroyOnLoad(gameObject);
}
else
{
// 存在多个就删除
Destroy(gameObject);
}
}
}
在开始场景中创建GaneManager并添加脚本
这样就保证了唯一性,而且跳转场景也一直存在,接下来创建一个音效管理器和GameManager一样的操作
接下来管理音效的对象池,首先在GameConf中添加音效和播放音效的预制体,首先预制体
在EFAudio.cs中添加代码
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EFAudio : MonoBehaviour
{
private AudioSource audioSource;
// 外部调用,初始化并播放音效
public void Init(AudioClip clip)
{
audioSource = GetComponent();
audioSource.PlayOneShot(clip);
}
private void Update()
{
//如果播放完毕,就将该音效对象放进对象池中
if (audioSource.isPlaying == false)
{
PoolManager.Instance.PushObj(GameManager.instance.GameConf.EFAudio, gameObject);
}
}
}
然后就是各种音效
添加资源进去
然后就是播放,在AudioManager.cs中添加代码
关于音效的调用和从对象池中获取对象、放进对象都处理完了,就开始在所有需要音效的地方调用
1)按钮
2)铲子
3)点击卡片和种植
测试无误,下面写僵尸相关的音效,导入资源
然后就是3中音效的逻辑:
1)僵尸呻吟
2)僵尸吃植物
3)豌豆射手攻击到僵尸
关于音效就结束了,测试无误。