非常简单的问题: 在c#中(在Unity中),我从附加到游戏对象的Monobehaviour类创建一个新的自定义类:
CustomClass test1 = new CustomClass(t1, t2, 0.5f);
我希望这个类实例知道它的创建者是谁 - 它是一个协程,它应该检查它的父亲是否被销毁。我当然可以这样传递:
CustomClass test1 = new CustomClass(this, t1, t2, 0.5f);
///
CustomClass(MonoBehaviour creator, string t, string t2, float a);
但是,有更优雅(=自动)的方式吗?我知道静态函数的以下方法:
public static void Test(this MonoBehaviour behaviour, float a);
///
this.Test(0.5f);
类构造函数有类似的东西吗?
答案 0 :(得分:0)
这必须完成manually。确实有没有方法自动传递该引用,但是有一种方法可以在不通过函数或构造函数的情况下执行此操作。
您可以使用static
字典来简化此操作。但是,每次创建CustomClass
的新实例时,都必须将MonoBehaviour
和CustomClass
添加到字典中。
在CustomClass
函数中,您可以使用一个函数,通过将MonoBehaviour
实例传递给该CustomClass
字典来从字典中检索static
。
正在创建CustomClass
类的新实例的类的示例:
public class TestMono: MonoBehaviour
{
public static Dictionary<CustomClass, MonoBehaviour> classToMonoBehaviour;
// Use this for initialization
void Awake()
{
classToMonoBehaviour = new Dictionary<CustomClass, MonoBehaviour>();
//Create and add class to the dictionary
CustomClass cclas = new CustomClass();
classToMonoBehaviour.Add(cclas, this);
}
}
需要访问创建它的CustomClass
的{{1}}类:
MonoBehaviour