【Unity C#】数値のカウントループ
2023/09/14
作成者:ダイギイン(アクシオン管理人)

はじめに

ゲームのメニュー画面などにつきものの選択肢のカーソルについて。
一番上や一番下に行ったら反対側から戻ってくるように数値を扱うテクニックについてご紹介します。


目次


ループの考え方

カーソルを移動するとき、方向キーを1回押すと次の選択肢へ移動するとき、
選択肢の数をNとすると今の選択肢の場所nは次の2つの関係が成り立っています。
(ただし、ここでは前の選択肢へは戻らないとする)

n = n + 1 かつ n <= N

Nまで行った後、最初に戻ってくるにはnからNを引くと良さそうです。
しかしここで、「Nで割った余り」という考え方を使います。

算数の考え方

n = Nのとき、nNで割った余りは0になる。

(使用例)
選択肢が10個のときカーソルが10番目にいるならば、
10 ÷ 10 = 1 余り 0 なので
余りをカーソルの位置にすると0番目に戻せる。

いかがでしょうか、ピンと来ましたでしょうか?
図にしてみると・・・・


fig.1
次節でコードにしてみましょう。


数値がループするコード

まず、テキストUIの数値をカウントアップしてループするスクリプト(script.1)から先に紹介します。


script.1 TestScript.cs

このスクリプトをUIの"Text(Legacy)"を配置しアタッチして再生してみます。(fig.2)


fig.2
数値が999までカウントした後、0に戻って再びカウントアップしています。

以上、この仕組みとキー入力を組み合わせれば都合の良いものができると思います。
(まとめかたが雑でスミマセン・・・・)


【応用】カウントダウンする場合

「カーソルが逆にも進むよ」と言ったときはどうするのでしょうか?
If文で最大値へ持っていくのも良いですが・・・・

応用として、数値がカウントダウンする場合です。
最大値が9のとき、0の位置から-1して9に戻すには?
0から9まで要素は10個ですので・・・

ヒント:-1した結果に10を足せば良さそうです。

ここから先は、皆さんも挑戦してみてください。

ページトップ