0からスタート!ゲーム開発ブログ

ゲーム開発に関する様々な記事を更新します

【初心者向け】Unityで始めるC#ゲーム開発 - int型とfloat型

はじめに

Unity のプログラミングで使用される C# のデータ型には様々な種類があります。 今回はそのデータ型から数字を扱う int (イント)型float(フロート) 型を紹介します。

 特に最初のうちは Unity での数値のほとんどは、この2つのデータ型で管理できます。 まずはこの2つのデータ型を理解していきましょう。



int 型


 C#における int 型は、整数値を表現するためのデータ型です。整数値のデータ型は他にも複数用意されています。 int 型は、符号付き整数を表現することができますので、正(+)の値も、負(ー)の値も、両方を値として管理できます



用途


 整数型は、扱えるデータの範囲が決まっています。 例えば、byte 型という整数型は 0 から 255 までの値しか扱えませんが、 int 型は -2,147,483,648 から 2,147,483,647 まで、とても大きな値を扱えます。

 そのため、プレイヤーの情報であれば、点数の管理、お金の管理という部分に活用出来ます。 またアイテムを何個持っている、という形で個数の表現にも利用できますね。

 是非想像力を膨らませて、どんなものに使えそうなのかを考えてみてください。



int 型の変数の宣言


 int 型の変数を宣言する場合は、以下のように記述します。


int playerScore = 0; 


 int型の変数 playerScore を宣言し、0 を代入して初期化しています。 変数名からプレイヤーの現在のスコアを表現することに利用するために宣言されています。



int 型の四則演算


 int 型は整数の値になりますので、int 型同士での四則演算(加減乗除)の計算を行うことが出来ます。 プログラムではこれらの計算用の記号を算術演算子と呼びます。 乗除算については特別な記号が用意されており、利用方法は以下の通りです。

 特に大切なのは、数字を直接計算する以外に、変数を利用して、変数の値(中身)を使った計算ができる部分です。

1.加算

   int 型の変数同士を足す場合は、単純に"+"演算子を使用します。 例えばスコアを増やしたり、持ち物の数を増やしたりするときに利用できます。

int a = 5;
int b = 3;
int c = a + b;    //cには 8 が代入される


2.減算

 int 型の変数同士を引く場合も、単純に"-"演算子を使用します。 例えばお金を支払ったとき、体力が減ったときなどに利用できますね。

int a = 5;
int b = 3;
int c = a - b;  //cには2が代入される


3.乗算

 int 型の変数同士を掛ける場合は、"*(アスタリスク)"演算子を使用します。 例えば攻撃力を3倍にしたり、持ち物をまとめて購入した時の合計金額を算出する際に利用できます。

int a = 5;
int b = 3;
int c = a * b;  //cには15が代入される


4.除算

   int 型の変数同士を割る場合は、"/(スラッシュ)"演算子を使用します。 ただし、割り切れない場合は小数点以下が切り捨てられます。 例えば敵の防御力を半分にしたり、お金を 1/4 にしたりできます。

int a = 5;
int b = 3;
int c = a / b;  //cには1が代入される


 そのほかにも % (剰余)演算子、インクリメント、デクリメントといった、数学では見かけない算術演算子も用意されています。

learn.microsoft.com



複数の四則演算の組み合わせ


 数学の四則演算と同じで、乗除算と行ってから加減算を行います。 同じく、式内に ( ) がある場合には、そちらを先に計算します。


int num1 = 10;
int num2 = 5;
int num3 = 2;
int num4 = 4;

int result = (num1 + num2) * num3 - num4 / num3;


 …途端に分かりにくく、読みにくくなりました。 そういう場合には、一度、式内で使われている4つの変数の部分を 実数に置き換えて考えるようにしてみてください。


int result = (10 + 5) * 2 - 4 / 2;


 変数の見かけに騙されて混乱しやすいですが、変数の値(中身)を元に計算されていますので、 わからないときには、こうして置き換えて計算していくと処理の内容が見えてきて、プログラムへの理解が深まります。


 この式での処理ですが、まず括弧内の 10 + 5 が計算され、結果の 15 が得られます。 次に、この結果に 2 を掛けるために 15 * 2 が計算され、結果の 30 が得られます。 その後、先に 4 / 2 が計算され、結果の 2 が得られます。 最後に、30 - 2 が計算され、最終結果の 28 が変数 result に代入されます。



float 型


 float 型は、小数点以下を含む数値を扱うためのデータ型です。 小数点以下のデータ型も整数型と同じように、他にも複数の小数点以下のデータ型が用意されています。



用途


 float 型も、扱えるデータの範囲が決まっています。

 最小値は 1.175494e-38、最大値は 3.402823e+38 です。 eという表示は、10のべき乗という意味です。 つまり、1.175494e-38は、1.175494 × (10の-38乗) という値を表しています。

 小数点の値を利用するケースですが、Unity では Transform コンポーネントに広く利用されています。 Positon の値による位置や座標の管理、Scale の値によるサイズの管理などです。 また、その特性から時間の管理(秒単位の精度で計測するために使用される)にも活用することが出来ます。 ストップウォッチのような機能を作りたい場合に利用できますね。



float 型の変数の宣言と四則演算


 float 型の変数を宣言する場合は、以下のように記述します。


float x = 3.14f;


 変数名は「x」、値は「3.14f」です。

 ここで、変数名の後ろに付いている「f」は、小数点以下のデータ型の値が float 型であることを示すために必要な接尾辞です(float 型の頭文字の f です)。

 f を書かないで小数点の値を記述すると、プログラムはその値を double 型という、別の不動小数点用のデータ型として認識します。 Unity において浮動小数点の値を管理する際には float 型がメインで利用されています。 そのため、小数点の値を記述した際には、忘れずに f を書く癖を付けるとよいでしょう。


float 型の四則演算


 float 型も数値のデータ型ですので、int 型と同じように float 型同士での四則演算を行うことが出来ます。 ここでは加算のみ提示しておきます。


float a = 5.7f;
float b = 32.92f;
float c = a + b;    //  cには 38.62f が代入される


 特に float 型の場合は Unity 内部の計算でも多く活用されます。

 Transform コンポーネントの Positon の各軸の値は float 型ですので、 ゲームオブジェクトを移動させるための座標計算に利用されています。

 この移動の際の移動速度を求めるには、距離を時間で割ることで算出できます。 距離も時間も float 型で管理することができますので、こういった数学的な計算にも float 型の四則演算を用いることができます。



ポイント


 整数用のデータ型や、小数点用のデータ型が複数用意されているのは、扱える値の範囲の違いです。 今後学習を進めていく中で、より小さな、あるいはより大きなデータ型を扱う場面も出てくるでしょう。

 どのような用途であるのかを考え、変数の宣言を行う際には、扱うデータの範囲に合わせて適切なデータ型を選択する必要があります。



まとめ


 int 型と float 型は、どちらも数値を表現するためのデータ型です。 int 型は整数値を表現し、float 型は小数点以下を含む実数値を表現します。

 例えば、int 型を使って年齢や個数を表現し、float 型を使って重さや速度を表現する、ということができます。

 なお Vector3 型という、主に x, y ,z 軸で利用する3つの情報をまとめて管理できるデータ型がありますが、 そちらの各 x, y, z の値も、それぞれ3つの float 型の組み合わせで成り立っています。

 1つ1つのデータ型をしっかり理解していくことは、 他のデータ型の構成を理解することにもつながっている、ということですね。