How to use in a child class a variable created in a base class?

Hi! I’m just starting to learn C# and I have a very basic problem regarding classes and inheritance. Basically, I have created a Plant class the regroups the basic functionnalities of a plant, and then I created a Grass class that will be attached to a Grass object in my game.
And I wanted to be able to intialize some variables (like age or birthTime) in the Plant class, and then access them in the Grass class; like this, when I will create another type of plant (flower for example), I would not need to initialize these caracteristics.

Here is my Plant class, where I initialize the age and birthTime variables:

And here is my Grass class, where I would want to access these variables but I can’t to it… Could someone explain to me how to do it pls? Thanks!!

Right now you have float birthTime;. Since you didn’t specify any access modifier (Access Modifiers - C# | Microsoft Learn), it is by default using private. Private variables can only be accessed within the class that declared them.

To make your variable accessible to derived classes like Grass, you need to use the protected or higher access modifier:

protected float birthTime;

Be careful with using Unity callbacks like Update and Start in both the parent and child classes though. I’m not exactly sure what the interaction is but I doubt Unity will call both the Update on Plant and Grass. it will probably pick the one from Grass.

You probably want to stop with inheritance at this point and just focus on learning programming, lifecycles of things in Unity, and the Unity API. There is nothing wrong with inheritance but it is a very advanced subject, and beware that Unity only barely uses inheritance and instead uses a component hierarchy. As Praetor said above, you are likely to run into all kinds of baffling weird behavior trying to jam inheritance into Unity without understanding things.

If you’re just starting out, I highly recommend these tutorials. They will give you a great survey of what is going on with programs that interoperate tightly with Unity:

Imphenzia / imphenzia - super-basic Unity tutorial:

https://www.youtube.com/watch?v=pwZpJzpE2lQ

Jason Weimann:

https://www.youtube.com/watch?v=OR0e-1UBEOU

Brackeys super-basic Unity Tutorial series:

https://www.youtube.com/watch?v=IlKaB1etrik

Sebastian Lague Intro to Game Development with Unity and C#:

https://www.youtube.com/watch?v=_cCGBMmMOFw

Remember also how to do tutorials properly:

Tutorials are a GREAT idea. Tutorials should be used this way:

Step 1. Follow the tutorial and do every single step of the tutorial 100% precisely the way it is shown. Even the slightest deviation (even a single character!) generally ends in disaster. That’s how software engineering works. Every single letter must be spelled, capitalized, punctuated and spaced (or not spaced) properly. Fortunately this is the easiest part to get right. Be a robot. Don’t make any mistakes. BE PERFECT IN EVERYTHING YOU DO HERE.

Step 2. Go back and work through every part of the tutorial again, and this time explain it to your doggie. See how I am doing that in my avatar picture? If you have no dog, explain it to your house plant. If you are unable to explain any part of it, STOP. DO NOT PROCEED. Now go learn how that part works. Read the documentation on the functions involved. Go back to the tutorial and try to figure out WHY they did that. This is the part that takes a LOT of time when you are new. It might take days or weeks to work through a single 5-minute tutorial. Stick with it. You will learn.

Step 2 is the part everybody seems to miss. Without Step 2 you are simply a code-typing monkey and outside of the specific tutorial you did, you will be completely lost.

Of course, all this presupposes no errors in the tutorial. For certain tutorial makers (like Unity, Brackeys, Imphenzia, Sebastian Lague) this is usually the case. For some other less-well-known content creators, this is less true. Read the comments on the video: did anyone have issues like you did? If there’s an error, you will NEVER be the first guy to find it.

Beyond that, Step 3, 4, 5 and 6 become easy because you already understand!

Thanks a lot for such a quick and clear answer!!