読者です 読者をやめる 読者になる 読者になる

Unityな日々(Unity Geek)

Unityで可視化アプリを開発するための試行錯誤の覚書

#pragmaを使う

#pragmaとは、コンパイラ固有の指定を行う手段として ISO/JIS/ANSI 規格で定められているもの。#pragma 文の構文はコンパイラによって異なる。

Unityの場合、次の3つがある。

pragma strict - 動的型付けを不可にする
pragma implicit - 型の暗黙宣言を可能にする
pragma downcast - 親クラスから子クラスへのキャストを可能にする

サンプルは例えば What is #pragma implicit and #pragma downcastを参照。

#pragma strict
var go : GameObject;
var clone : GameObject = Instantiate(go); // no!  Instantiate returns Object, not GameObject

はクラスが違うのでエラーになる。

この場合、downcastを設定すればよい

#pragma strict
#pragma downcast
var go : GameObject;
var clone : GameObject = Instantiate(go); // yes!


これは、asでキャストしてもよい(このほうが明示的でわかりやすそう)

#pragma strict
var go : GameObject;
var clone : GameObject = Instantiate(go) as GameObject; // yes!