根据名称加载不同类型的相同类型

时间:2016-09-12 13:51:28

标签: c#

这是一个非常简单的结构问题,但我不知道在C#中执行此操作的最佳方法是什么。

我需要一个“基础”类或者其他东西来允许我在“level”对象中加载不同的“级别”,并且更改名称我可以将类打开我想要使用的类。

现在我正以这种方式使用抽象类和子实例:

using UnityEngine;
using System;

public class Level : MonoBehaviour {

    public levelClass level;

    public void initLevel(string className) {

        Type t = Type.GetType(className);
        level = (levelClass)Activator.CreateInstance(t, new object[] { });
        level.Start();

    }

    void Start () {

        Debug.Log("Levels: Start");
        initLevel("worldTwo");

    }

    void Update () {

        level.Update();

    }

}

public abstract class levelClass {

    public abstract void Start();
    public abstract void Update();

}

public class worldOne : levelClass {

    public override void Start() {
        Debug.Log("worldOne: Start");
    }

    public override void Update() {
        Debug.Log("worldOne: Update");
    }

}

public class worldTwo : levelClass
{

    public override void Start()
    {
        Debug.Log("worldTwo: Start!");
    }

    public override void Update()
    {
        Debug.Log("worldTwo: Update!");
    }

}

但我认为存在更好的方法,例如将所有类存储在列表中并调用它或类似的东西。我不喜欢的部分是在这个文件中公开了一些类(我知道我可以拆分其他文件,我只是想以一种更好的方式做到这一点)

0 个答案:

没有答案