ドキュメントにないUnity独自のException
UnityにはドキュメントにはないExeptionが多数あります。
ドキュメント化されているのはPlayerPrefsExceptionだけなんですよね。
UnassignedReferenceException
主に変数に値がセットされていない場合に使用されるException
publicでInspector上にプロパティを表示したまま何もセットせずにいると発生
public GameObject obj; //中身は空 void Start () { Instantiate (obj); }
MissingComponentException
コンポーネントを取得するGetComponent系でコンポーネントが取得できなかった場合に使用するException
void Start () { //Hogeというコンポーネントはこのゲームオブジェクトにアタッチされていない if (GetComponent<Hoge> () == null) throw new MissingComponentException (); }
MissingReferenceException
参照先が見つからない場合に使用されるException
private GameObject obj; IEnumerator Start () { obj = new GameObject ("hoge"); Destroy (obj); //削除 yield return new WaitForEndOfFrame(); //削除されるまで待つ Debug.Log (obj.transform); //削除されたobjのtransformを取得する }
ExitGUIException
GUIが表示出来ない、または表示したくない場合に使用されるException
通常このExceptionはログに表示されません。EditorScriptでは表示される場合があります
void OnGUI () { //try-catchするとわかりやすい try { GUIUtility.ExitGUI (); //ExitGUIExceptionをスローするだけ } catch (ExitGUIException e) { Debug.Log (e); } GUILayout.Box ("hoge"); //try-catchを外すと表示されない }
UnityException
Unityに関連するなんでもござれなException
大抵はメッセージを見て判断する