Unity Запрет воспроизведения звука для всех объектов с одинаковым именем - PullRequest
1 голос
/ 12 марта 2019

проблема в том, что когда я нажимаю на один объект, все другие объекты (с тем же именем, что и у этого объекта) издают звук.

Это код, который я использую:

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");
        }
    }  
}

Как запретить воспроизведение звука для всех объектов?

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Преобразование моего комментария в ответ. Проблема в скрипте связана с пользовательским вводом.

Input.GetMouseButton возвращает, удерживается ли нажатой указанная кнопка мыши. Следовательно, ваше утверждение if истинно, пока мышь удерживается нажатой. По этой причине у вас постоянно звучит много звуков, потому что вы Input.GetMouseButton возвращаете true в нескольких кадрах во время взаимодействия.

Вместо Input.GetMouseButtonDown следует использовать. Поскольку он возвращает true в кадре, пользователь нажал указанную кнопку мыши. Он вернет false, когда мышь удерживается нажатой. Следовательно, он вернет true только один раз при нажатии мыши.

0 голосов
/ 12 марта 2019

вы всегда можете попытаться настроить массив этих объектов, содержащих звук, а затем отключить их все одновременно.

public gameObject[] itemsWithSound;

for(int i = 0; i < itemsWithSound.length; i++)
{
     itemsWithSound.SoundManagerScript.StopSound();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...