我编写了当玩家摧毁立方体时播放声音的脚本。
{
public GameObject blastEffect;
public float offSet;
public int amountOfDestroyed = 0;
private AudioSource source;
public AudioClip clip;
private void Start()
{
source = GetComponent<AudioSource>();
}
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "Bullet")
{
source.PlayOneShot(clip);
GameManager.instance.score += 1;
Vector3 spawnPosition = new Vector3(transform.position.x, offSet, transform.position.z);
Instantiate(blastEffect, transform.position, blastEffect.transform.rotation);
Destroy(gameObject);
}
}
}
即使立方体被摧毁,声音也不会开始
我也尝试过这个方法
{
public GameObject blastEffect;
public float offSet;
public int amountOfDestroyed = 0;
public AudioSource blastSound;
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "Bullet")
{
blastSound.Play();
GameManager.instance.score += 1;
Vector3 spawnPosition = new Vector3(transform.position.x, offSet, transform.position.z);
Instantiate(blastEffect, transform.position, blastEffect.transform.rotation);
Destroy(gameObject);
}
}
}
但是当我想将这个声音添加到该脚本所在的预制件中时,我得到了信息“TypMissMatch”,而且立方体也没有消失,不知道为什么。 (立方体在回合开始时生成。)
所以我像这样更改了脚本的第一个版本:
{
public GameObject blastEffect;
public float offSet;
public int amountOfDestroyed = 0;
public AudioClip clip;
private void Start()
{
GameManager.instance.source = GetComponent<AudioSource>();
}
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "Bullet")
{
GameManager.instance.source.PlayOneShot(clip);
GameManager.instance.score += 1;
Vector3 spawnPosition = new Vector3(transform.position.x, offSet, transform.position.z);
Instantiate(blastEffect, transform.position, blastEffect.transform.rotation);
Destroy(gameObject);
}
}
}
并将这节经文添加到我的单例游戏管理器中
public AudioSource source;
我这样做是因为现在即使在立方体被破坏后也可以听到该音频。