将所有者引用传递给类构造函数

时间:2017-09-16 01:30:31

标签: c# class unity3d constructor instance

非常简单的问题: 在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);

类构造函数有类似的东西吗?

1 个答案:

答案 0 :(得分:0)

这必须完成manually。确实有没有方法自动传递该引用,但是有一种方法可以在不通过函数或构造函数的情况下执行此操作。

您可以使用static字典来简化此操作。但是,每次创建CustomClass的新实例时,都必须将MonoBehaviourCustomClass添加到字典中。

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