【Unity】在Unity中通过触发播放音频
1、创建音频播放组件
首先在Hierarchy窗口中新建空组件。

选中新建的组件,在Inspector窗口中添加组件“Audio Source”,并将要播放的音乐拖入其"Audio Clip"属性。
关闭"Play On Awake"选项,视情况选择是否开启"Loop"选项。开启后音频能够循环。

2、创建触发组件
新建一个组件,添加Box Collider组件,并调整其大小与位置。
打开Box Collider组件的Is Trigger属性,否则会有碰撞体积。
为这个组件添加一个脚本,命名为Test。

在脚本中删除默认代码,添加如下代码:
using UnityEngine; public class Test : MonoBehaviour { //音乐 public AudioSource audioSource; //判断 bool PlayerAtExit = false; bool HasAudioplayed;//音频只播放一次 //玩家 public GameObject player; //触发器事件,传入控制的触发器 private void OnTriggerEnter(Collider other) { //如果进入触发器的是玩家 if (other.gameObject == player) { PlayerAtExit = true; } } //每帧调用此函数 void Update() { if (PlayerAtExit) { if (!HasAudioplayed) { audioSource.Play(); HasAudioplayed = true; } } } }
通过HasAudioplayed变量,保证音频不会每帧都从头播放。
将步骤1创建的音频空组件拖入脚本的Audio Source属性。将玩家组件拖入Player属性。

运行游戏,触发组件后可以正常播放声音。

分类:
标签:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步