Nanashi-soft○プログラマ専用○Unityでゲーム開発○
◇Unityでゲーム開発 -JavaScriptの基本-
基本的な所は JavaScriptの文法から外れませんが,全てのプログラミング言語には環境毎の方言があります
Unityではどうなるのかを,実際に試して把握する所から始めます
●変数の宣言
var 変数名 : 型 = 初期化内容;
です
例)変数を整数で宣言して,0で初期化する
var a : int = 0;
例)変数を浮動小数点で宣言して,0.0で初期化する
var a : float = 0.0;
例)変数を文字列で宣言して,「test」で初期化する
var a : String = "test";
※先頭の Sは大文字なので注意のこと
……と言うのが原則ですが,そもそも int型と言うのは,OSのビット数に依存すると言うのが大昔からのお約束です(それで
int4とか変な書き方することもあるわけで)
●変数の型と有効範囲
・整数型
符号付8bit整数 |
sbyte |
符号なし8bit整数 |
byte |
符号付16bit整数 |
short |
符号なし16bit整数 |
ushort |
符号付32bit整数 |
int |
符号なし32bit整数 |
uint |
符号付64bit整数 |
long |
符号なし64bit整数 |
ulong |
※普通はintを使う。±21億ぐらいの値が使えます
・不動小数点数型
32bit不動小数点数 |
short |
64bit不動小数点数 |
double |
※普通はfloatを使う。高い計算精度を必要とする場合にdoubleがある
実を言うと速攻で小数点演算に問題を見つけました
var a : float = 0.0;
function Update () {
a = a + 0.1;
print(a);
}
と書くと,時々変な値が出ます(謎
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8000001 ←
0.9000001 ←
1
1.1
1.2
ちなみに,double型だと,最初から正しく計算する気が見受けられません(汗
var a : double = 0.0;
function Update () {
a = a + 0.1;
print(a);
}
0.100000001490116 ←
0.200000002980232 ←
0.300000004470348 ←
本当にそうか? を確認してみる
値が化けているのであれば,if文をはさんでみればわかる
var a : float = 0.0;
function Update () {
a = a + 0.1;
print(a);
if (a == 0.8) {
print("OK!!");
}
if (a == 0.8000001) {
print("Bake!!");
}
}
これを実行して「Bake!!」が出ると変数の中身そのものが化けている
0.6
0.7
0.8000001
Bake!! ←
0.9000001
化けてるよヽ(;´Д`)ノ
float変数を if文で使うときは,十分注意する必要があると。。。
例えば小数点以下2ケタで四捨五入する,と考えるとか('-'*)
if (0.65 <= a && a < 0.75) {
//0.7の時の処理
} else if (0.75 <= a && a < 0.85) {
//0.8の時の処理
} else if (0.85 <= a && a < 0.95) {
//0.9の時の処理
}
○TOP○プログラマ専用○Unityでゲーム開発○



