我试图弄清楚如何用 c# 做一些我特别注意到 Unity 引擎所做的事情。这似乎是某种形式的实现或子类化,但由于我没有我不知道的来源。
在 Unity 中,所有脚本都是这样的:
class someclass : MonoBehavior
{
}
现在有一个函数列表,您可以通过这个 MonoBehavior 在您的类中调用引擎来使用该引擎,例如
void OnGUI()
{
so something here
}
因此,如果您说 5 个脚本都包含 OnGUI 函数,它将在所有 5 个脚本中调用
我想自己实现这种类型的东西,但我无法弄清楚。
您如何编写基类或实现或在子类中调用预定义函数但不需要函数的子类并且不必在其中使用覆盖的任何东西?
这是来自统一引擎的示例源文件:
public class EnemyAttack : MonoBehaviour {
// Use this for initialization
void Start () {
AttackTimer = 0;
CoolDown = 2.0f;
}
// Update is called once per frame
void Update () {
if (AttackTimer > 0) AttackTimer -= Time.deltaTime;
if (AttackTimer < 0) AttackTimer = 0;
if (AttackTimer == 0){
Attack();
AttackTimer = CoolDown;
}
}
}
该代码运行良好,然后引擎调用在第一次启动时开始(单次调用)并调用更新每一帧通知绝对没有覆盖在任何地方的代码中
它似乎是某种事件系统,但我在谷歌上找不到任何描述如何做到这一点的东西。