LoginSignup
0
0

More than 1 year has passed since last update.

unity c# クラスの中に自身のクラスを定義したい

Last updated at Posted at 2022-06-05

はじめに

クラスの中に自身のクラスを定義しようと思ったらエラーが起きたので
試行錯誤の末に発見したその解決策を紹介

エラー例

hoge.cs
public class hoge{
public hoge _hoge;
public string hage;
}

これをもし成功できたとしてunity のインスペクタなどで表示すれば
無限ループになってしまうことが容易に伺えます
※だからこそエラーが起きたと思われますが

そこを強引に解決するために継承を利用します

継承についてよくわからない人は以下の記事を参照してください

解決策

hoges.cs
public class hoges:hoge{
}

public class hoge{
public hoges _hoges;
public string hage;
}


定義したいクラスを継承した空クラスを別の場所に用意して
メインクラス内にそのクラス名を定義すれば無事解決します。

注意事項(インスペクタ上で変数を管理したいとき)

unityの場合はmonobehaviorを継承していないとインスペクタには表示されないので
各クラスの先頭にこれをつけることを忘れずに

[System.Serializable]

そしてやはりメインクラスにはmonobehaviorを継承する必要があります

大規模なクラスの場合はこのような方法があることを頭の片隅に
おけばどこかの場面で使えるかもしれません

実際の自分の実用例

interaction.cs

[System.Serializable]
public class interactionsuceess:interaction{


}

[System.Serializable]
public class interaction
{public interactionsuceess interactionsuceess;
}

using UnityEngine;
public class interactionenter : MonoBehaviour
{
public interaction firstinteraction; 
}
0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0