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

1 Reply

· Add your reply
  • Sort: 
avatar image
2

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
Add comment · 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 [CreateAsset$$anonymous$$enu] attribute. It can store things like strings, bools, lists, references to other assets in the project and so on. Then each prefab has a $$anonymous$$onoBehaviour 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 $$anonymous$$onoBehaviour 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.

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

Inherited member variables not set to base value c# 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