OnTriggerEnter() 播放声音时 Unity Editor 冻结
Unity Editor freezes when OnTriggerEnter() plays a sound
每次玩家进入触发器时,我的 Unity 编辑器都会冻结,
- 我添加了一个键码以查看是否是音频源引起的
- 我已从 OnTriggerEnter 中注释掉 source.Play() 并使用调试语句检查碰撞是否正常工作
两者都没有问题,所以我知道它与 OnTriggerEnter() 激活源有关。
public class PlaySound : MonoBehaviour
{
public AudioSource source;
public Collider coll;
public AudioClip clip;
public bool soundPlaying;
private void Start()
{
source = GetComponent<AudioSource>();
coll = GetComponent<Collider>();
soundPlaying = false;
}
private void Update()
{
while(source.isPlaying)
{
soundPlaying = true;
}
if (Input.GetKeyDown(KeyCode.Space))
{
Debug.Log("Space entered");
source.Play();
}
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Player")
{
Debug.Log("player entered");
source.Play();
}
}
}
另外请注意,soundPlaying Bool 用于 AI 检测对象,因为周围会散布一些对象。
没关系我解决了它,更新函数中的 while 循环可能导致溢出所以我将其更改为 if 语句现在一切正常
每次玩家进入触发器时,我的 Unity 编辑器都会冻结,
- 我添加了一个键码以查看是否是音频源引起的
- 我已从 OnTriggerEnter 中注释掉 source.Play() 并使用调试语句检查碰撞是否正常工作
两者都没有问题,所以我知道它与 OnTriggerEnter() 激活源有关。
public class PlaySound : MonoBehaviour
{
public AudioSource source;
public Collider coll;
public AudioClip clip;
public bool soundPlaying;
private void Start()
{
source = GetComponent<AudioSource>();
coll = GetComponent<Collider>();
soundPlaying = false;
}
private void Update()
{
while(source.isPlaying)
{
soundPlaying = true;
}
if (Input.GetKeyDown(KeyCode.Space))
{
Debug.Log("Space entered");
source.Play();
}
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Player")
{
Debug.Log("player entered");
source.Play();
}
}
}
另外请注意,soundPlaying Bool 用于 AI 检测对象,因为周围会散布一些对象。
没关系我解决了它,更新函数中的 while 循环可能导致溢出所以我将其更改为 if 语句现在一切正常