• 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
1
Question by Ralkarin · Sep 27, 2010 at 02:19 PM · gameobject

Attaching Additional Data to a GameObject without Update behavior

I've got a scene with 10,000 GameObjects in it and I need to associate some additional data with each object. I can accomplish this using a script with a class that derives from MonoBehaviour, but if I do this, my framerate drops because the engine calls Update() on every GameObject in every frame. I don't intend to implement Update(), but it's killing my framerate.

I tried making my class derive from Component, but then I cannot attach it to my GameObject prefab because it must derive from MonoBehaviour.

Is there a better way to attach a class to a GameObject to get more data without requiring the Update() logic to run every frame?

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

Answer by Mike 3 · Sep 27, 2010 at 04:41 PM

If you have an Update function in your script, it'll run. If you don't, it'll skip it and you'll get some cpu cycles freed up

What you could alternatively do is create a Dictionary/HashTable with GameObject as key and YourCustomClass as value, so you can set and get data via that

Comment
Add comment · Show 3 · 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 Ralkarin · Sep 27, 2010 at 05:41 PM 0
Share

I didn't realize it was as simple as deleting the Update() function. In my $$anonymous$$d, it was simply an override to a virtual function that would get called every frame regardless of the implementation.

The solution really is as simple as deleting the Update() function from the script. Thanks $$anonymous$$ike!

avatar image Mike 3 · Sep 27, 2010 at 05:47 PM 0
Share

If it were a virtual function, you'd have to use the override keyword. The way it actually works is that it stores a pointer to your function when the script is instantiated, and calls that

avatar image Ralkarin · Sep 28, 2010 at 12:53 AM 0
Share

Clever! I wondered why I didn't have to use the override keyword. $$anonymous$$ade that mistake a few times trying to actually implement some overrides.

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

No one has followed this question yet.

Related Questions

using Contains(gameObject) to find and destroy a gameObject from a list 2 Answers

How to deal with many buttons in the Inspector 1 Answer

ContactPoint with OnParticleCollision? 0 Answers

Burning Mesh away 1 Answer

Positions of Objects in Unity - World Position, Transform Position, Inspector Position, Local Position, Prefab Positions, Center of Objects for Parents & Childs 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