播放音效有很多方式
- 在脚本中得到AudioSource,然后在某个时间播放AudioSource.paly()即可,但是在种方法会依附于物体,物体destory了,不处理就会报错,不适合进行枪声这种物体很快就销毁的情况,如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TankMove : MonoBehaviour
{
//两种声音
public AudioClip moveAudioClip;
public AudioClip stayAudioClip;
//AudioSource组件
private AudioSource _mAudioSource;
// Start is called before the first frame update
void Start()
{
//获得AudioSource组件
_mAudioSource = GetComponent<AudioSource>();
}
// Update is called once per frame
void FixedUpdate()
{
//如果tank正在移动
if (Tank.isMoving())
{
//设置移动声音
_mAudioSource.clip = moveAudioClip;
if(!_mAudioSource.isPlaying)
//播放,为了不重叠播放,要判断
_mAudioSource.Play();
}
else
{
_mAudioSource.clip = stayAudioClip;
if (!_mAudioSource.isPlaying)
_mAudioSource.Play();
}
}
}
- AudioClip,在某个时刻,某个地点,播放一次即可,只需要声明AudioClip,在unity进行赋值,然后在某个时刻
AudioSource.PlayClipAtPoint(AudioClip,transform.position);
即可,不会依赖于物体是否存在
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class shell : MonoBehaviour
{
public AudioClip shellExplosionAudioClip;
void OnTriggerEnter(Collider other)
{
//在某个时刻进行播放
AudioSource.PlayClipAtPoint(shellExplosionAudioClip,transform.position);
//销毁物体,不会报错
Destroy(this.gameObject);
}
}