【发布时间】:2013-03-03 22:11:01
【问题描述】:
我正在尝试弄清楚如何使用 c# 做一些事情,我特别注意到 Unity 引擎可以。这似乎是某种形式的实现或子类化,但由于我没有不知道的来源。
在 Unity 中所有的脚本都是这样的:
class someclass : MonoBehavior
{
}
现在有一个函数列表,您可以通过类中的 MonoBehavior 调用使用该引擎,例如
void OnGUI()
{
so something here
}
所以如果你说 5 个脚本都包含 OnGUI 函数,那么它会在所有 5 个脚本中被调用
我想自己实现这种类型的东西,但我想不通。
您如何编写基类或实现或任何在您的子类中调用预定义函数但不要求函数的子类并且不必在其中使用覆盖的东西?
这是来自 unity Engine 的示例源文件:
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;
}
}
}
该代码完美运行,然后引擎调用在第一次启动时开始(单次调用)并调用更新每个帧通知绝对没有覆盖在任何地方的代码中
它似乎是某种事件系统,但我在谷歌上找不到任何描述如何做到这一点的东西。
【问题讨论】:
-
请用您的具体问题更新您的标题。阅读How to Ask
-
听起来您可能正在寻找具有虚拟方法的抽象类。
-
我不太明白你的问题是什么。如果你不懂 oop,我建议你阅读一些教程。
-
我看过教程,都说这东西是不可能的