Unity:少し特殊なストップウォッチアプリ制作日記_6:ラップタイム集計完成

・ラップタイム表示を発生させる

 ひとまず完成したアプリが上の動画なわけだが、ラップタイムの集計にはinstantiateされたパネルに対して「ボタンが押された時間」と「1つ前のラップタイムの時間」を伝えてカットの長さを計算させたくらいで、処理自体はこれまで作ってきたものの繰り返しで大したことはない。
 ただ最初の計測スタート時に0番目のカットに時間0秒を確保するようにしたり(でも表示は不要なのでしない)、一旦ストップした後で計測を再開した場合にカットの通し番号が継続するようにしたりという外周りの気配りが割と面倒だった。

 タッチエフェクトの実装でも使ってるんだけど、instantiateは結構重い処理のようであまりゲーム中に実行するのはよろしくないらしい。ゲーム屋の世界では通例、そういう場合にはシーンの起動時にinstantiateしておき、初期化状態で停止させたものを非表示にして確保して必要になったら(複数必要な場合は複製して)表示をオンにすることで発生の処理負荷を下げるそうだ。
 でも僕は素人だからそんなの知らん。の精神で毎回instantiateした。まぁこのアプリでは重さも気にするようなほどじゃないし。
 他にもGetComponentやゲームオブジェクトを探すFind系のコマンドもゲーム中は控えたほうがいいらしいけど以下同文。

スクリーンショット 2021-08-22 201644

・課題というか問題点

 さてここまで来たが1つ問題があって、カットの長さをフレームで表示した際に、フレーム数の計算の都合で実時間とカットの合計時間が1フレーム単位でずれてしまうことが起こった。例えば2つのカットが計算上24.8フレーム(表示は24フレーム)と12.3フレーム(表示は12フレーム)だった時、合計の時間は37.1フレーム(表示が37フレーム)になってしまう。
 これを解決するには総尺の方をカット長の累積にすればいいが、そうなると計測の実時間とズレることになる。

 まぁこのアプリは「脳内カットを測ったら1秒+10フレーム(コマ)だから絵コンテは1秒+12フレームにするか(24フレーム計測で1.5秒)」みたいな、描く際の目安にしたいだけなので厳密性が欲しいわけじゃない。ってことでこの問題はそのまま放置することにした。

 残りは©表記やらtwitterのアカウントの製作者情報とかを載せてアプリを出力するだけだ!

この記事が気に入ったらサポートをしてみませんか?