解決したい事
現在CookieClickerをUnityで再現しようとしているのですが
正確に毎秒クッキーを何回クリックしたか出力するコードの書き方が分からず詰まっております。
ネットで調べたりもしましたが、そもそも調べ方が悪いのかそれとも情報がないのか有用な情報は見つかりませんでした。
なんとかそれっぽい物は作れましたが、長時間クリックしていると正しく表示されなくなってしまいます。
どなたかご教授願います。
また測定方法として毎フレーム情報が更新されるようにしたいです。(フレームレートは30FPS)
書いたコード
テキスト表示部分
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class UiManager : MonoBehaviour 7{ 8 public Text totalCookie; 9 public Text cookiePerSecondText; 10 11 // 毎フレーム毎の総クッキー数 12 private float[] frameTotalCookie = new float[30]; 13 // 現フレームのクッキー生産効率 14 private float frameCPS; 15 16 void Update() 17 { 18 frameTotalCookie[Time.frameCount % 30] = GameManager.gameManager.totalCookie; 19 // 現フレームの総クッキーから29フレーム前の総クッキーを引くことでクッキー生産効率を算出 20 // ただしこのやり方だと一生frameTotalCookie[0]が引かれることはない為、要修正 21 // TODO;CPS算出時にframeTotalCookie[0]が引かれる側の数値として選ばれない問題の修正 22 frameCPS = frameTotalCookie[Time.frameCount % 30] - frameTotalCookie[Time.frameCount % 29 + 1]; 23 24 totalCookie.text = GameManager.gameManager.totalCookie.ToString("000000000.0") + " Cookies"; 25 cookiePerSecondText.text = frameCPS.ToString("F1") + " CPS"; 26 } 27} 28
クリック部分(クッキーをクリックするとPushCookieが呼ばれます)
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class CookieManager : MonoBehaviour 6{ 7 public void PushCookie() 8 { 9 GameManager.gameManager.totalCookie++; 10 } 11} 12
###追記
配列数参照の部分を変数にして[30]読み込もうとしたときに[0]にすれば解決出来ますが
出来ればそれ以外のやり方でお願いします。
追記し忘れていました、申し訳ないです。
###追記2
出力したい回数は1秒間でのクリック回数(30FPS固定なので過去30フレームの総クリック回数です。)
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/15 09:22 編集
2020/07/16 00:51