- Home /
The question is answered, right answer was accepted
Why is update calling both the base and overridden version of a method?
My Google Fu is failing to find an answer here. I'm trying to get a different behavior from two different characters for the same ability, so I've derived a new class, added additional methods. I wanted to override Update, actually, but the same thing happened.
base class:
void Update () {
. . .
stuff();
}
protected virtual void stuff() { . . . }
declaration of the overridden method in the derived class:
protected override void stuff() { . . . }
I wanted to override Update, actually, but the same thing happened
This is not possible, because it's the way to do it.
//Base Class
protected virtual void Update () {
. . .
stuff(); //calls the base stuff()
}
protected virtual void stuff() { . . . }
//Derived Class
protected override void Update () {
. . .
stuff(); //calls the derived stuff()
}
protected override void stuff() { . . . }
This works! $$anonymous$$aybe you made a mistake while overriding Update() or something.
EDIT: Actually, if you use VS, you can verify this by hovering over stuff()
in each Update(), and a popup will tell you which one base/derived is being called.
Thank you for your reply. Copying those declarations into my code
// base class update
protected virtual void Update() {
Debug.Log("Base Update()");
. . .
}
// derived class update
protected override void Update() {
Debug.Log("Overriden Update()");
. . .
}
Both the base and the derived Update() are being called, hence my confusion. As far as I can tell I'm overriding correctly in C#, but the scripts are telling me otherwise . . .
Are you sure you haven't attached both Base and Derived class on your object?(use Debug.Log(GetInstanceID(), this);
to check where is called the Update
function.
Follow this Question
Related Questions
An OS design issue: File types associated with their appropriate programs 1 Answer
How to change variables from another script? 1 Answer
How can I access an inherited method from a separate (collided) object? 1 Answer
Calling methods on inherited classes in C# 2 Answers
Derived Class Fields 3 Answers