Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
This question was closed Dec 16, 2017 at 11:00 PM by diemwing for the following reason:

The question is answered, right answer was accepted

avatar image
0
Question by diemwing · Dec 16, 2017 at 09:38 PM · inheritancepolymorphism

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() { . . . }
Comment
Add comment · Show 4
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image pako · Dec 16, 2017 at 10:12 PM 0
Share

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.

avatar image diemwing pako · Dec 16, 2017 at 10:30 PM 0
Share

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 . . .

avatar image Hellium diemwing · Dec 16, 2017 at 10:48 PM 0
Share

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.

Show more comments

0 Replies

  • Sort: 

Follow this Question

Answers Answers and Comments

74 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

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


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges