C# 统一防止为具有相同名称的所有对象播放声音
问题是,当我单击一个对象时,所有其他对象(与该对象同名)都会发出声音 这是我正在使用的代码:C# 统一防止为具有相同名称的所有对象播放声音,c#,unity3d,C#,Unity3d,问题是,当我单击一个对象时,所有其他对象(与该对象同名)都会发出声音 这是我正在使用的代码: void OnMouseOver() { if (Input.GetMouseButton(0)) { if (this.gameObject.name == "door") { anim.SetBool("open", !(anim.GetBool("open"))); SoundManagerScript
void OnMouseOver()
{
if (Input.GetMouseButton(0))
{
if (this.gameObject.name == "door")
{
anim.SetBool("open", !(anim.GetBool("open")));
SoundManagerScript.PlaySound("door");
}
if (this.gameObject.name == "window")
{
anim.SetBool("open", !(anim.GetBool("open")));
SoundManagerScript.PlaySound("window");
}
}
}
如何防止为所有对象播放声音?您可以尝试设置一组包含声音的对象,然后同时关闭所有对象
public gameObject[] itemsWithSound;
for(int i = 0; i < itemsWithSound.length; i++)
{
itemsWithSound.SoundManagerScript.StopSound();
}
publicgameobject[]itemsWithSound;
for(int i=0;i
您可以尝试设置一组包含声音的对象,然后同时关闭所有对象
public gameObject[] itemsWithSound;
for(int i = 0; i < itemsWithSound.length; i++)
{
itemsWithSound.SoundManagerScript.StopSound();
}
publicgameobject[]itemsWithSound;
for(int i=0;i
将我的评论转换为答案。脚本中的问题与用户输入有关
Input.GetMouseButton
返回是否按住给定的鼠标按钮。因此,按住鼠标时,if语句为true。这就是为什么有许多声音连续播放的原因,因为您Input。在交互过程中,GetMouseButton
在多个帧上返回true
相反,应使用
Input.GetMouseButtonDown
。因为它在帧上返回true,所以用户按下了给定的鼠标按钮。按住鼠标时,它将返回false。因此,当按下鼠标时,它只会返回true一次。将我的评论转换为答案。脚本中的问题与用户输入有关
Input.GetMouseButton
返回是否按住给定的鼠标按钮。因此,按住鼠标时,if语句为true。这就是为什么有许多声音连续播放的原因,因为您Input。在交互过程中,GetMouseButton
在多个帧上返回true
相反,应使用
Input.GetMouseButtonDown
。因为它在帧上返回true,所以用户按下了给定的鼠标按钮。按住鼠标时,它将返回false。因此,当按下鼠标时,它只会返回true一次。我认为这与此脚本无关。因为您已经在mouseover上使用了OnMouseOver
。此外,您不必使用此
。gameObject已经指向脚本附加到的对象。您的碰撞器有问题,或者您的SoundManagerScript
有问题,请尝试放置Debug.Log(gameObject.name)
OnMouseOver方法中的行,并查看当您悬停一个对象时,其中有多少个会触发。另外一个问题是您使用的是Input.GetMouseButton
,因此这将被多次调用。你可以考虑把它改为<代码>输入。GoMouthButoNo.。好的,谢谢!AliKanat你应该回答这个问题;)我认为这与这个剧本无关。因为您已经在mouseover上使用了OnMouseOver
。此外,您不必使用此
。gameObject已经指向脚本附加到的对象。您的碰撞器有问题,或者您的SoundManagerScript
有问题,请尝试放置Debug.Log(gameObject.name)
OnMouseOver方法中的行,并查看当您悬停一个对象时,其中有多少个会触发。另外一个问题是您使用的是Input.GetMouseButton
,因此这将被多次调用。你可以考虑把它改为<代码>输入。GoMouthButoNo.。好的,谢谢!AliKanat你应该回答这个问题;)