В последние недели я играл с Unity3d, используя С# в качестве языка сценариев.
Я никогда не использовал до С# или Unity3d, и я пытаюсь понять, как методы переопределяют работу в Unity framework.
Меня удивляет, что я могу расширить базовый класс MonoBehavior
и переопределить методы, такие как Start ()
, Update ()
и т.д., Не используя ключевое слово override
, и компилятор не жалуется на это!
Вместо этого в "нормальной" программе С# я должен использовать ключевое слово override
, или я получаю предупреждение о компиляторе. Например:
public class BaseClass {
public virtual void MyMethod () {
Console.WriteLine("BaseClass.MyMethod()");
}
}
public class SubClass : BaseClass {
public override void MyMethod () {
Console.WriteLine("SubClass.MyMethod()");
}
}
class Program {
static void Main () {
SubClass obj = new SubClass ();
obj.MyMethod ();
}
}
вместо этого в Unity я могу просто сделать:
class PlayerController : MonoBehaviour {
void Update () {
// code...
}
}
Что происходит за кулисами? Использует ли единство "динамические трюки" или что?