アプローチ1.FPS値を計りたい
------------------------------------------------------------------
var count : int;//Updateの回数
var countGui :int;//1秒後のcountの数
var flg : int;//FPS計るフラグ(スイッチ(ボタン))
function Start(){
Application.targetFrameRate = 60;//フレーム制限FPS60
}
function Update () {
count += 1;
if(Input.GetKeyDown("a")){ //"a"押したらFPS値計るフラグ
count = 0;
flg = 1;
}
if(flg == 1) countEve();
}
function countEve(){
flg = 0;
yield WaitForSeconds(1);//1秒経ったら
countGui = count;//countGuiにUpdate回数を更新
count = 0;//Update回数リセット
flg = 1;//繰り返すフラグ
}
function OnGUI(){
GUI.Label(Rect(0,0,200,20),"FrameRate : " + Application.targetFrameRate);//FPS制限値
GUI.Label(Rect(0,20,200,20),"スコア : " + countGui);//現在のFPS値(Update回数
}
-----------------------------------------------------------------
UnityってFPS値表示できないの?
分からなかったので自分のスキルでやってみた。
無駄に長い気がするけど、エディター上だと最初のシーンは読み込む前に実行されるので
指定のキーを打ったら計測するようにした。
まずUnityで
Edit→projectSettings→Quality→Good→VSync Count→Dont't Sync
にしておく。
こうしないと自分でFPS制限できない?
たしかFPS値=Update回数なのでUpdateの時に"count"って変数に+1してる
1秒経ったらその時のcount数を画面に表示して"count"リセット。
ってのをやってるつもり。
これで1秒毎にUpdate回数がわかる。
実行してみた。
Bandicamというソフトを使ってる。
これは録画ソフトだけど、ゲームのFPSを表示したり、FPSを制限したり出来る優れもの。
上の画面は制限なし
下の画面はFPS30に制限
若干タイミングがおかしいのか? 数字が+2多く表示される。
制限なしありで誤差が同じなので、これでいいかな?
つまり、FPSが下がる(フレーム落ち)時にスコアを下げるようになる。
これを利用して
(スコア / targetFrame) * 100
みたいに点数形式にすればベンチマークみたいのが出来るのかなあ。
あとは、FF14のベンチマークのようにリアルタイムレンダでシーンを流すか、
クリックするたびに何かポリゴンやキャラクターを増やして、どこまで耐えれるかみたいな・・・。



