• 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
Question by the_siks · Jan 23, 2017 at 08:12 AM · c#classstaticinheritance

Make all instances inherit the same value from parent and make static

Basically I'm trying to create a prefab that has a script with certain variables that I give it, the only thing I'm unhappy with is that when I place the prefab into the world it obviously carries the variables down onto the instance. For example if I made an item prefab and I called it 'Rock' it would mean that every instance of that prefab would have it's own variable called 'Rock' which is kind of a waste of memory.

What I'm trying to do is along the lines of a static variable but obviously if I did use a static variable that means I'd have to create a new class for each item or a new variable for each item.

Comment

People who like this

0 Show 0
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

1 Reply

· Add your reply
  • Sort: 
avatar image

Answer by UnityCoach · Jan 23, 2017 at 10:51 PM

You can use a ScriptableObject. One of the particularities of Scriptable Object is that you only reference them.

So, every "static yet derivable" properties can be part of a Scriptable Object that you reference in your Prefab/ScriptInstance.

Then all you need is to create as many ScriptableObject instances as you need variations.

Comment
Xarbrough
Bunny83

People who like this

2 Show 1 · 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 Xarbrough · Jan 23, 2017 at 11:59 PM 1
Share

I +1 this. You can create a ScriptableObject called RockData which can be instantiated as an asset in the project folder via the [CreateAssetMenu] attribute. It can store things like strings, bools, lists, references to other assets in the project and so on. Then each prefab has a MonoBehaviour with specific or shared logic in them and they all reference the RockData instance that lives in the project. That way, they all share the same memory and only need a single, very small pointer to the asset. Next, when you need to have variations, you just need to create multiple instances in the project or you can associate instances with scene objects, as well. You can still share data between multiple scene objects when referencing either an SO asset or an instance within a MonoBehaviour in the scene.

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

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

9 People are following this question.

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

Inheritance best solution to handle *many* instances of a class with unique values? 1 Answer

How to set different classes at runtime 2 Answers

Having problem with constructor 3 Answers

Multiple Cars not working 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