Nanashi-softプログラマ専用Unityでゲーム開発


◇Unityでゲーム開発 -JavaScriptの基本:キャスト-

キャスト(型変換)は自動的におこなわれるっぽいです
そして,範囲を超えるとエラーになってスクリプトが停止します

●数値同士のキャスト
例)符号付8bit整数を,符号付32bit整数に代入する
var a : sbyte = 10;
var b : int = a;

例)符号付8bit整数を,範囲を超えた演算をしながら,符号付32bit整数に代入する
var a : sbyte = 127;
var b : int = a + 10;
※きちんと137になる

例)符号付32bit整数を,符号付8bit整数に代入する
var a : int = 10;
var b : sbyte = a;

例)符号付32bit整数を,符号付8bit整数に代入する。範囲を超えた値の場合
var a : int = 137;
var b : sbyte = a;
※OverflowException: Number overflow.エラーになる

例)符号付32bit整数を符号付32bit不動小数点数に代入する
var a : int = 1280;
var b : float = a;

演算途中でfloat型にしたい場合
var a : int = 1280;
var b : int = 13;
var c : float = parseFloat(a) / parseFloat(b);
※a/bとだけ記述した場合は小数点以下が切り捨てられる

例)符号付32bit不動小数点数を,符号付32bit整数に代入する
var a : float = 0.1;
var b : int = a;
※結果は0になる

特殊な演算には Mathfと言うオリジナルクラスが使用できます

切り上げ
var a : float = 0.1;
var b : int = Mathf.Ceil(a);
※結果は1になる

四捨五入
var a : float = 0.1;
var b : int = Mathf.Round(a);
※結果は0になる


●数値を文字列に変換
例)符号付32bit整数を,文字列に変換
var a : int = 10;
var b : String = "" + a;
※String(a)という書き方は使用出来なかった

var a : int = 10;
var b : String = "" + a + 10;
※結果は「1020」になる(文字列でね)

var a : int = 10;
var b : String = "" + a - 10;
※BCE0051: Operator '-' cannot be used with a left hand side of type 'String' and a right hand side of type 'int'.エラーになる

var a : int = 10;
var b : String = "" + (a - 10);
※結果は「0」になる(文字列でね)


●文字列を数値に変換
例)文字列を,符号付32bit整数に変換
var a : String = "10";
var b : int = parseInt(a);

var a : String = "10";
var b : int = parseInt(a + 10);
※結果は「1020」になる(数値でね)

var a : String = "10";
var b : int = parseInt(a) + 10;
※結果は「20」になる(数値でね)

var a : String = "10a";
var b : int = parseInt(a);
※FormatException: Input string was not in the correct format System.Int32.Parse (System.String s)エラーになる

var a : String = "10+10";
var b : int = parseInt(a);
※FormatException: Input string was not in the correct format System.Int32.Parse (System.String s)エラーになる

例)文字列を,符号付32bit不動小数点数に変換
var a : String = "0.1";
var b : float = parseFloat(a);

例)文字列を,符号付8bit整数に変換
var a : String = "10";
var b : sbyte = parseInt(a);

例)文字列を,符号付8bit整数に変換。範囲を超えた値の場合
var a : String = "137";
var b : sbyte = parseInt(a);
OverflowException: Number overflow.エラーになる


●intをbyte型に丸め込んで代入
var a : int = 666;
var b : byte;
if(a < 0){
b = 0;
}else if(255 < a){
b = 255;
}else{
b = a;
}


TOPプログラマ専用Unityでゲーム開発

ポンチョっ娘メイナの実験場~ユ○ティちゃん衣装を脱いだイラスト版~