Unity - Atraso no Som do Áudio no Button

Pessoal, boa noite.

Já pesquisei e mt sobre os atrasos nos áudios que tem na Unity. Já tentei baixar alguns Assets pra ver se resolve, mas também não serve.

Criei um Método onde dou o Play() no áudio quando o Botão é clicado. Ele só emite som quando o botão é solto, mas oq eu quero é que ele toque assim que o botão é clicado. Daí troquei o Button por EventTrigger com o PointDown, mas tem o mesmo atraso.

Alguém sabe oq fazer pra resolver esse atraso no áudio quando o botão é clicado? Detalhe, coloquei o Play() no áudio dentro do Input.GetMouseButtonDown e não tem atraso. O atraso é o áudio dentro do botão/buttton ou EventTrigger.

Não é questão de configuração, pois já testei a latência como BestLatency e BestPerformace. nada feito. Qualquer ajuda é mt apreciada! Obg.

O som está presente na Scene, ou você está carregando-o dinamicamente quando vai tocá-lo?

A menos que seja um arquivo de áudio bem grande (vários MB), não acho que o problema seja o evento relacionado, ou mesmo a configuração do som, mas a forma como você está configurando sua Scene e chamando o play do áudio.

Num teste rápido, adicionei um botão com o seguinte script:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class BotaoSom : MonoBehaviour, IPointerDownHandler
{
	public AudioSource som;

    public void OnPointerDown(PointerEventData data)
	{
		som.Play();
	}
}

SomBotao é um AudioSource já presente na Scene.

image

Picked Coin Echo 2 é um wav qualquer que peguei na internet. Quando pressiono o mouse no botão, ele é tocado normalmente, sem nenhum atraso notável.

PS: por definição, o evento click de um botão sempre depende de o mouse ser solto. Um clique é uma combinação de mouse-down e mouse-up, se o mouse não é solto, não é um clique. Isso em qualquer sistema de UI normal, não só na Unity. Então click não vai servir pro que você quer.

Referência: c# - Continuous input from eventTrigger OnPointerDown - Stack Overflow

Abraço.

2 curtidas

Obg pela resposa!

Está na Scene

O áudio é muito pequeno, 4k

Já tentei trocar o Button pelo EventTrigger também, mas não mudou mt coisa. Quando coloquei no input.getmousebutton(0) o som é emitido na hora! Então o problema é realmente o OnClick do Button. Nem o método OnPointDown faz diferença, e eu estou fazendo do jeito que vc falou. Ele diminui o atraso na Unity, quando vou pro android fica a mesma coisa que o button.