Мой звук повторяется в Unity всякий раз, когда я нажимаю левую кнопку мыши, а не играю один раз - PullRequest
0 голосов
/ 16 марта 2020

Я работаю над игрой FPS в Unity, используя C#. Предполагается, что этот код воспроизводит звук один раз, когда вы нажимаете левую кнопку мыши, но всякий раз, когда я нажимаю на него, звук воспроизводится несколько раз без перерыва между звуками. Я нашел вопрос, очень похожий на этот, но не смог реализовать ответ в своем коде, ссылка: https://forum.unity.com/threads/how-to-play-a-sound-with-c.206152/. Любая помощь будет оценена.

    using UnityEngine;

    public class GunFire : MonoBehaviour
    {
        void Update()
        {
            if (Input.GetButton("Fire1"))
            {
                AudioSource sound = gameObject.GetComponent<AudioSource>();
                sound.Play();
            }
        }
    }

Ответы [ 2 ]

2 голосов
/ 16 марта 2020

Каждый раз, когда вы нажимаете кнопку, вы хотите, чтобы звук воспроизводился. Тогда проблема в том, что вы используете GetButton, который возвращает истину каждый кадр, в котором нажата кнопка.
Попробуйте использовать GetButtonDown, который вернет истину только в первом кадре, на котором нажата кнопка, независимо от того, удерживаете ли вы ее или нет. .
Ссылки на страницы API для этих функций: GetButton , GetButtonDown

Возможно, вам также понадобится проверить, включена ли петля на аудио источник.

0 голосов
/ 16 марта 2020

Проверьте свой AudioSource для галочки l oop, это должно быть ложно. Если вам нужно l oop true для этого AudioSource, вы можете использовать PlayOneShoot () вместо Play ().

ps Выполнять GetComponent () каждый раз, когда вам нужно воспроизвести звук, - плохая практика. Будет лучше обналичить его один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...