这是一个非常简单的结构问题,但我不知道在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!");
}
}
但我认为存在更好的方法,例如将所有类存储在列表中并调用它或类似的东西。我不喜欢的部分是在这个文件中公开了一些类(我知道我可以拆分其他文件,我只是想以一种更好的方式做到这一点)