音ゲーを作ろうとしています。
「キーを押したら音を鳴らす」という基本部分を作っているのですが、
キーを押しても即座に音が鳴っていないような感覚があります。
体感で5/60秒くらい遅れて鳴っている感じです。
今までは音ゲーのようなゲームを作っていなかったので、気にならなかっただけで、ずっとこんな感じだったと思います。
同じパソコンとキーボードで、試しに世に出回っている音ゲーをプレイしてみたのですが、上記のような遅れて音がなる感覚はありませんでした。なので、ハード的なものやwindowsの問題ではないようです。
原因は何でしょうか?
一応該当のコードを貼っておきますが、ごくごく基本的な記述だと思います。
public AudioClip sound1; AudioSource audioSource; void Start() { audioSource = GetComponent<AudioSource>(); } void Update() { if (Input.GetKeyDown(KeyCode.G)) { audioSource.PlayOneShot(sound1); } }
まだ調べてないからわかりませんが、GetKeyDownに問題があるかもしれません
他のGetKeyメソッド試してみてください!
FixedUpdateとUpdateの使い分けの可能性もあります!
https://teratail.com/questions/pg9z2x6e6pblkp
Load TypeとかAudioClipの設定はどのように設定されていますか?
またファイル形式はどのようなものを使用されているのでしょうか?
https://docs.unity3d.com/ja/2020.3/Manual/class-AudioClip.html
こちらを読んだ感じですと、使用するファイルフォーマットや設定によってはオーバーヘッドがありそうです。
AudioSourceのDSP Buffer SizeをBest Latencyに設定するあたりの設定も手としてはありますね
あとはCRIとかの専用のサウンドミドルウェアの導入ですかね
あそこは滅茶苦茶レイテンシーにこだわってたと思います
>TrueRyoBさん
ありがとうございます。
入力なのでupdateのほうがいいとは思ったのですが、試しにfixupdateにしてfixの設定時間もすごく短くしてみたのですが変わらず。他の入力方法も試しましたが変わりませんでした。
>YAmaGNZさん
サウンドファイルそのものの設定をいじるという発想がありませんでした。
Load Typeは、デフォルトの「Decompress On Load」になっていて、調べたところ、これが一番早そうです。
あとはAudioClip設定でLoad In Background のチェックを入れてみたりしました。
もう少しこの辺の設定をいじってみます。
音のファイル形式はmp3です。形式が速さに影響するとはあまり考えてなかったのですが試しにwavを使ってみたらかすかに早くなった感じがします。色々要検証です。
ありがとうございます。
>UnitySoldierさん
>AudioSourceのDSP Buffer SizeをBest Latencyに設定
そっちにも設定があるのですね。早速変えてみました。
いくつかいじって、すこし改善した感はあるものの、音ゲーとして動かせるレベルには程遠い状態です。
CRIというのはロゴをよく見かけるアレですね。そういうのの導入も検討してみます。
ありがとうございます。
こういった記事がありました
Unityでサウンド遅延を最低限に抑える ~CRI ADX2の導入とSonicSYNC~
https://oucrc.net/articles/c1ykvefba/

回答1件
あなたの回答
tips
プレビュー