前提としてUnityの場合キータイプの入力イベントがないため
Updateで回してInputを検知してます。
(前提が間違ってたら教えてください。)
現状は以下の通りfpsを最大値にしてるのですが、
それよりも高速タイパーたちが、速く入力してくるため
どのように解決すればいいかわからないです。
私がやっている以外の解決方法があったら教えて欲しいです。
以下ライブラリを調べましたが、結局はUpdateを回してキー入力検知してました。
http://spi8823.hatenablog.com/entry/2016/12/06/072901
https://qiita.com/AirBeans5956/items/4d9f83fe208944c86f2a#comment-b2f4efb70742e155e3cc
私はタイピングキー入力の瞬間マックスが1000key/min(17key/second)ぐらいなので、問題いのですが、
トップタイパーになると、6000key/min(100key/second)ぐらいはあるのではないかと思います。
瞬間というのは0.1sec単位とかそいういう単位での最高速度です。
フレームレートを10にしたところ自分での入力の受付をしてくれないことは確認しました。
デフォルトのフレームレートが60ぐらいなので、以下の通り、
フレームレート変更のために
こちらのサイトからfps関連項目のvsyn ccountをdont syncにして、
http://smartgames.hatenablog.com/entry/2016/06/15/000632
とおりフレームレートを変更しました。
以下コードで有効になっていることを確認しました。
Application.targetFrameRate = 1200; Debug.Log ("Application.targetFrameRate="+Application.targetFrameRate); // 1200
以下の通りfpsを実測して見ましたが、
float timeTrigger; float timeRate = 1f; public override void Update() { i++; if (Time.time > timeTrigger) { Debug.Log ("i=" + i); i = 0; timeTrigger = Time.time + timeRate; } }
実際のfpsは以下の通りでした。
*fpsをまったく変更しないデフォ(vsyn ccount:every v blank)の場合:i=60 *vsyn ccount:every second v blankの場合:i=30 以下はvsyn ccount:dont syncにして、fps可変してます。 *Application.targetFrameRate = 10の場合:i=10 *Application.targetFrameRate = 30の場合:i=30 *Application.targetFrameRate = 60の場合:i=60 *Application.targetFrameRate = 90の場合:i=75 *Application.targetFrameRate = 120;の場合:i=80 *Application.targetFrameRate = 160;の場合:i=80 *Application.targetFrameRate = 1200;の場合:i=80
公式で
https://docs.unity3d.com/jp/540/ScriptReference/Application-targetFrameRate.html
targetFrameRateを設定しても、そのフレームレートは保証されません。プラットフォームの仕様によって変動する可能性があります。また、アプリケーションが処理能力を使用しているため、ゲームでフレームレートが得られないことがあります。
とあるためfps80以上は難しそうです。
現状fpsを最大値にしてるのですが、入力抜けの報告が入ってます。
トップタイパーによる入力抜けの対応は諦めるしかないでしょうか?
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/26 04:50
2017/11/27 00:25