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 /
avatar image
0
Question by baribal · Mar 16, 2018 at 04:44 PM · c#inheritance

Update base class variable value to pass it between subclasses already attached to game objects

Hello, I have a class which will have methods for subclasses and variables to pass values between them. Classes PhaseOne and PhaseTwo are already attached to game objects at the same time, when Val is 0, at least I think this goes like this. And that is why value is not updated in the second class. Question is how to update ? Some kind of "reinheritance" from parent/base class ?

 public class TestClass : MonoBehaviour {
 
     public int Val { get; set; }
 
 
 }
 public class PhaseOne : TestClass, IState {
 
     public void Enter ()
     {
         print(Val); // 0
         Val = 15;
     }
 }
 public class PhaseTwo : TestClass, IState {
 
     public void Enter ()
     {
         print(Val); // still 0
     }
 }

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 MacDx · Mar 16, 2018 at 07:04 PM 0
Share

I'm not understanding what the issue is. Could you explain it a bit more please? What is the goal of this? What are you trying to achieve with these classes? If you could describe step by step what you're doing and what exactly isn't working as you'd expect, it'll be a lot easier to help you.

Regards

avatar image baribal MacDx · Mar 16, 2018 at 07:42 PM 1
Share

I use state$$anonymous$$achine script by interfaces to change states of the game. This script is attached to gameObject. Below this script are attached classes with game phases to the same gameObject. PhaseOne, PhaseTwo, PhaseThree, PhaseFour, PhaseFive. PhaseOne, PhaseTwo, PhaseFive have common methods and variables so they inherit from TestClass with tools for them. Between these classes I want to pass / share variable values because they should be able to manage player choices. The problem is when I change Val in PhaseOne Class, PhaseTwo prints out value not changed ( 0 ). What I think is because they are already added to gameObject before Val changed. I could add another script to this gameObject like ClassWithValues and have access to it by GetComponent but I want to try the way in this topic. How to do this? I hope explanation helps

avatar image MacDx baribal · Mar 16, 2018 at 07:45 PM 0
Share

It does. I'll post an answer.

avatar image TreyH · Mar 16, 2018 at 07:43 PM 0
Share

Why would it? Instances of PhaseTwo don't know that instances of PhaseOne exist, neither group cares what the other does with its members. No instances of those share any values with instances of the other.

You might be confused about how inheritance works. In the above declarations, all PhaseOne and PhaseTwo inherit from TestClass is an integer called Val. And that's it. There's no special version of Val that knows what happens across instances of those other two classes, nor is there a special secret instance of the base TestClass preserving values to share across other derivatives.

2 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by MacDx · Mar 16, 2018 at 07:55 PM

The issue I can see is this:

The problem is when I change Val in PhaseOne Class, PhaseTwo prints out value not changed ( 0 ). What I think is because they are already added to gameObject before Val changed.

You are expecting that, when an instance of PhaseOne modifies its Val, the instance of PhaseTwo will automatically reflect this change on its own Val property. PhaseOne and PhaseTwo objects are separate instances and each of them have their own Val property, they are not linked in any way, even if they share a parent class. Inheritance is for code reusing , it doesn't mean that child classes will implicitly share values in any way.

With that being clarified, there's still the problem of sharing the data. IMO your best option here is to have the class that manages all of these Phase classes, pass them the correct data when needed, this could be done with events, or plain delegates, of you could simply structure the system in a way that every Phase contains the correct data before running their methods.

Hope this helps!

Comment
Add comment · Share
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
0

Answer by baribal · Mar 16, 2018 at 10:34 PM

thanks to both of you for you explanation. You're right. I'm new into inheritance and oop stuff. This helps to understand. I will go with manager class and helper class with added objects in the inspector.

Comment
Add comment · Share
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

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

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

Multiple Cars not working 1 Answer

Distribute terrain in zones 3 Answers

Overriding an initial value in a subclass? 3 Answers

Is it bad to use "this" keyword for variables, methods etc. from base class? 2 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