#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!