Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 PBAndy · Jun 12, 2013 at 11:17 PM · prefaboptimizationmemory

How are prefab parameters stored in instances?

In our project, we're evaluating where designer-tweakable data should be stored for any given Prefab.

The easy answer is that components expose tweak-able variables which can be edited in an inspector. So something like-

[SomePrefab] contains [SomeComponent] which has a public integer called 'TweakValue'. So our designer goes into the inspector and changes the value of that field.

My question is, if at runtime, I then spawn 1000 [SomePrefab] which each has its own [SomeComponent], does each instance have a copy of 'TweakValue' allocated in memory?

Thanks for any clarity you can give.

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
0

Answer by Owen-Reynolds · Jun 12, 2013 at 11:52 PM

Yes. Every var you see is copied for every instance.

Scripts are just classes which Unity invisibly news for you with the Instantiate. The standard rules for classes are that all vars are copied. If Person is a class with fName and LastName, and you have 100 people, you have 100 first and last names.

A static class var has one copy ever. Saves a lot of space, but you can no longer tweak different instances differently.

Most Unity projects probably create lots of pointless data. If machineGun bullet goes at speed 12 and does 2.3 damage with this explosion PE .... then every machineGun bullet wastefully stores all that data. But it probably isn't that much, and not worth "fixing."

The fix (to this often non-problem) is to think of it like a relational dataBase. Make a class called "fixedBulletData" with things that identify types of bullets. Make them prefabs so you can link your real bullet PFs to them. Then have give your actual bullets use something like public fixedBulletData myStats; for the link.

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 PBAndy · Jun 13, 2013 at 12:00 AM 0
Share

Right, I assumed as much, just wanted to make sure that wasn't some optimization happening during code generation. Also agree its probably not worth the memory savings to try a separate scheme, just wanted to be aware of it.

Thanks.

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

15 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

Related Questions

How to disable referenced Prefabs being preallocated in memory?? 0 Answers

Webplayer crashes on Chrome, but not on any other browser. Any way to avoid ? 1 Answer

Optimization on list handling 2 Answers

Do duplicate gameobjects use duplicate memory? 2 Answers

Long load time for scene... Some optimization questions. 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