• 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 monkeyThunk · Mar 24, 2012 at 07:25 PM · componentclassinheritancemonobehaviorsubclass

Component Class Hierarchy

I've created a hierarchy of UnityScript classes.

 SuperClass
    SubClassA extends SuperClass
    SubClassB extends SuperClass

These are currently stand-alone classes that I instate in code. I'd now like to map them so each one is a Component.

The problems seems to be that they all need to inherit directly from MonoBehavior.

Is it possible for my SuperClass to inherit from MonoBehavior, and the subclasses to inherit from the SuperClass ?

If it's not possible in UnityScript, would this be possible in C# ?

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

2 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by cowlinator · Mar 25, 2012 at 01:59 AM

Yes it is possible in c#

 SuperClass : MonoBehavior
 {
   ...
 }
 
 SubClass : SuperClass
 {
    void Update()
    {...}
    //etc.
 }
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
1

Answer by Bunny83 · Mar 25, 2012 at 02:40 AM

It should also be possible in UnityScript that way:

 class SuperClass extends MonoBehaviour
 {
     
 }
 
 class SubClassA extends SuperClass
 {
 }
 
 class SubClassB extends SuperClass
 {
 }

Note that every class have to be in it's own file and the file name has to match the class name. Otherwise you can't add the scripts to a GameObject.

I use C# exclusively because i don't like the JS-syntax ;) Also C# allows to inherit from one base-class and from additional interfaces whereas UnityScript only allows one ancestor. Also i don't have a clue of the virtual / override syntax in UnityScript which is actually one of the most important things when you use inheritance.

In C# you would do something like that:

 public class SuperClass : MonoBehavior
 {
     protected virtual void Update()
     {
     }
 }
 
 public class SubClass : SuperClass
 {
     protected override void Update()
     {
         base.Update(); // call the inherited function Update() from SuperClass
     }
 }
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.

Welcome to Unity Answers

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.



Follow this Question

Answers Answers and Comments

5 People are following this question.

avatar image avatar image avatar image avatar image avatar image

Related Questions

Unity 4.6b20 - Inheritance not working? 1 Answer

How to "include" an inherited C# Class into the file? 3 Answers

Can I/Should I call Awake() in parent class manually? 1 Answer

Private variable is not saved 3 Answers

C# Conception - Hide inherited members and functions 1 Answer


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