Playmakerを利用して、現在時刻によって振る舞いを変えたい場合、int型の変数で何時かを知るにはどうすれば良いでしょうか?
取得方法について
先に結論から書きましょう。一度文字列で日時を取得して、文字列からint型に変換して利用します。
完成図
作成するステートは下図のようになります。変数を2つ追加する必要があります。
- systemDateTime : 文字列
- hour : int型
処理を実行すると、hourの中に0~23までの数字が入ります。
使うアクションについて
今回は2つのアクションを経由して日時を取得します。
Action | 補足説明 |
---|---|
GetSystemDateTime | 現在の時間をFormatに従って文字列形式で取得することができる HHは00~23の形式で時間(HOUR)を取得することができる。 |
ConvertStringToInt | 文字列を数字(int型)に変換することができる。 今回は文字列で数字を受け取っているので、それをint型に変換してゲーム内で利用します |
補足など
ここからは知ってる人は読まなくてもいい情報。知識として入れる程度に読むのでもOKです。
日時のフォーマットって何?
GetSystemDateTimeでフォーマットを指定とありますが、そもそもフォーマットってなんですかね?という疑問。「日時 フォーマット c#」とかで検索すると、こちらのリンクが見つかると思います。
日時と一言で言っても、人によってはいろんな形式で欲しくなります。そこで一定のルール(フォーマット)に従って思い思いの形式で日時を取得することが出来ます。ちなみにスクリプト(C#)ではDateTimeという型の変数があって、日時同士の計算なんかも簡単に出来ます。下の表では2023年5月6日12時34分56秒だとすると・・・
フォーマット | 得られるもの | 取れる値 |
---|---|---|
yyyy | 西暦の年 | 2023 |
MM | 月 | 05 |
dd | 日 | 06 |
HH | 時 | 12 |
mm | 分 | 34 |
ss | 秒 | 56 |
Mひとつだけ、とかだと取れるものが全く変わってくるので、利用前には必ず確認しましょう。
他のフォーマットに関しては、試したり公式サイトで調べたりしてみよう!
文字列をint型に変換する
しれっとやってますが、文字列をint型に変換することが出来ます。ただし、 「abc123」などは数字に変換できません。数字を含む文字列のみを受け渡せるように加工してから変換しましょう。
Convert系のアクションは変換する他に三項演算子のような動きを作ることも出来ます。
例えばbool型がTrueの時は100、Falseの時は50みたいに条件によって渡したい値が異なる場合、いちいち分岐させる条件を書くのは大変です。そういうときにはConvertBoolToIntを使うことで簡単に扱うことが出来ます。
なんだか最初の文字列をintに変換するということから外れてきた気もしますが、Convert系アクション、使ってみてください。
コメント