【Unity[C#]】int型とfloat型の違いと使い方
UnityとUnrealEngineでゲーム開発中の「Exceliaゲーム開発部」の部員Eです。
Unity使いの皆さんはC#使いこなせてますか?
自分は全然使いこなせていません。
やっと読んで、初心者的な組み方ができるようになった気がする、そんな段階です。
そんな中、今日はC#のintとfloatについてです。
両者の違いは何ぞやと知らない方の為に、使い所をまとめます。
整数int型と浮動小数点数float型の使いどころ
両者の違いは、int型は「整数」を扱う、float型は「小数点までの数値」を扱う、ということみたいです。
厳密には4バイトがなんとかとか複雑みたいですが、
例のごとくよくわからないのでその辺りは割愛します。
概要はこんな認識で大丈夫かと思いますが、
どういう場面で使いこなしたほうが良いのか正直よくわかっておりませんでした、
しかし、開発中最初から理解しておけば良かったと後悔したので、
部員Eのおすすめの使用方法を解説(?)します。
float型は厳密には0にならないらしい
前提として誰かが書かれておりましたが、float型は「小数点の数値を扱う」が「整数を扱った場合必ず整数になるとは限らない」との事でした。
例えば「1-1=0」という計算があった場合、
整数を扱うint型では勿論「0」になります。
常識ですね。
しかしながら、float関数で計算した場合「1-1 ≠ 0」になる場合があるそうです。
そんな、バカな!と思いました。
しかし、調べてみるとfloat型では誤差が生じる場合があるとのことでした。
この誤差が出るのが厄介で、キャラクターの体力をfloat型で計算した場合に、
0なのに小数点分残って0じゃない場合が生まれてくるからです。
やられる筈のダメージをくらったのに、生きている!?みたいな状況が生まれるわけですね。
なので、体力などのキッチリした整数を扱う場合はint型を、
タイミングなど多少曖昧でもいい数値を扱う場合float型を使うのが良さそうです。
これを、知らなかったおかげで、プログラムを書き直す必要が出てきて(特にパラメータ周り)
修正にそれはそれはとても時間がかかりました。
なので、プログラムを初めて組む方は、この辺を意識してやっていくのが良いかと思います。
結論
float型が便利だったので、プログラムを組む際になんでもfloat型を使っていたので、
とても大変な目にあいましたがいい教訓になりました。
ですので、これからC#にてコードを書かれる方は、
体力等の整数で管理したほうが管理しやすいパラメーターはint型、
時間などの多少曖昧でもいい数値はfloat型と言った感じに使い分けた方が良いと思います。
しかし、この認識は専門家でもなんでもないので、間違っているかもしれません。
ですが、初心者の皆さんが制作を始めた時に、後から面倒にならない様参考までに、
頭の片隅に置いておいて貰えると幸いです。
また、専門家の方や間違ってるぞ!!って思う方いらっしゃいましたらこっそり教えてください。
最後になりましたが、今回の記事がこれからゲーム開発を始める方の一考になれれば光栄です。
今日も明日もゲーム開発は孤独ですが、一緒に頑張りましょう!!
今回は以上です。
次回もお楽しみに、更新できるように頑張ります。
部員Eでした!!