質問: FirebaseDatabase.DefaultInstance.RootReference; } void Update () { reference.Child ("PlayTime").SetValueAsync (PlayTime.playTime); } } ``` ### 試したこと OnApplicationQuitのタイミングとOnApplicationPauseのタイミングでの更新を考えましたが、 OnApplicationQuitは呼ばれないケースがあるとのことで、プレイ時間を保存できない場合があり利用できません。 参考:OnApplicationQuitイベントについて
回答: Updateで毎フレームの場合、1秒間に30回とか60回とかの頻度で保存されますね。 当然これはナシです。 とりあえず`OnApplicationQuit`での通信は入れておくとして。 こいつが呼ばれなかった時のことを考えますが、色々な方法があります。 1. タイマー的なものを作って、プレイ中、一定時間毎に通信 2. プレイヤーが何か操作した(ボタンを押した等)タイミングで通信 3. 何かの重要な処理(敵を倒した、レベルが上がった等)のタイミングで通信 今回は放置ゲームかつ総プレイ時間だけの保持らしいので1が妥当でしょうか。 あとは「どれぐらいの時間なら、もしデータの保存に失敗しても問題無いか」「出来るだけ通信頻度を下げられるか」を考慮して、適切な「一定時間」を設定してください。 (例えば`1分に1回`はデータロスは少ないけど通信頻度が多すぎる、`3時間に1回`は通信頻度は下がるがデータロスが大きい)