Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 11 Next capture
2021 2022 2023
1 capture
11 Jun 22 - 11 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 YoungDeveloper · Jul 28, 2015 at 09:59 PM · cameratagfindmain

Camera.main look up

How exactly unity API store Camera.main? I know gameobject with a tag MainCamera is looked up and returned. But, does that mean that every time i get the property a gameobject find by tag is executed, or it's cached somehow more efficiently to save unnecessary tag search?

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
1

Answer by zach-r-d · Jul 28, 2015 at 10:14 PM

Can't be 100% certain without access to the Unity source, but I would bet money that Camera.main is just a convenience property that wraps finds by tag and calls it every time.

Game object tags can be changed at runtime (meaning that the "main camera" object can theoretically change moment-to-moment), so caching the value would require listening for tag changes on all game objects. Even if there were an API for that, it would be a performance imposition on any code that changes game object tags, which is unreasonable when callers of Camera.main can just cache the return value.

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 YoungDeveloper · Jul 28, 2015 at 10:24 PM 0
Share

Yeh, that's what i was thinking. But there might be certain info check on each scene gameobject instantiation and destroy on unity side. So technically its possible without event driven behaviors, but i guess im safer to use my own cached instance and not relay on camera.main.

avatar image zach-r-d · Jul 28, 2015 at 10:32 PM 0
Share

The tag of an already existing object can be changed (as simple as gameObject.tag = "$$anonymous$$ainCamera"), so even checking on instantiation/destruction wouldn't help.

It is indeed possible without event driven behaviors (it could theoretically be hard coded into the GameObject.tag property setter), but that would be pretty absurd.

avatar image YoungDeveloper · Jul 28, 2015 at 10:39 PM 1
Share

Agree, sad that docs don't mention this, personally i think it should be a must if such simple operation are executed in such hardcore way. If you have couple scripts running camera.main in couple updates, its really an optimization sin against humanity! and devs should know!

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

21 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 avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

How do I find the closest target with a tag? c# 2 Answers

Main Camera flys up on "play" 0 Answers

Rotation using click and ctrl script?! 0 Answers

find GUIText 1 Answer

FindGameObjectWith "next" Tag 2 Answers


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