1. Help us improve the editor usability and artist workflows. Join our discussion to provide your feedback.
    Dismiss Notice
  2. We're looking for feedback on Unity Starter Kits! Let us know what you’d like.
    Dismiss Notice
  3. We’re giving 2017.1 beta testers a chance to win t-shirts and a Nintendo Switch. Read more on the blog.
    Dismiss Notice
  4. Unity 2017.1 beta is now available for download.
    Dismiss Notice
  5. Unity 5.6 is now released.
    Dismiss Notice
  6. Get further faster with the Unity Plus Accelerator Pack, free for new Unity Plus subscribers for a limited time. Click here for more details.
    Dismiss Notice
  7. Check out all the fixes for 5.6 on the patch releases page.
    Dismiss Notice
  8. Learn how you'll soon be able to publish your games to China in four simple steps with Xiaomi. Sign up now for early access.
    Dismiss Notice

Confirmation : no cache needed for "gameObject" property ?

Discussion in 'Scripting' started by Nems, Apr 29, 2012.

  1. Nems

    Nems

    Joined:
    Jul 18, 2011
    Posts:
    65
    Hi,

    I would like to access the GameObject of a component and there is a property for that :
    http://unity3d.com/support/documentation/ScriptReference/Component-gameObject.html

    Best practices advice to cache element through the Awake method, instead of using component's properties.
    Because behind the scene, property (like "transform") performs a : GetComponent call.

    But, GameObject is not even a component (inherit from Object), so I presume there is no need to cache it in a private var.

    Can you confirm that fact ??

    I am worried about performances and I need a process as cheap as possible to check the layer of an object after a RayCast. The only way I found is to retrieve the GO, then use the layer property.
     
  2. npsf3000

    npsf3000

    Joined:
    Sep 19, 2010
    Posts:
    3,832
  3. Tobias J.

    Tobias J.

    Joined:
    Feb 21, 2012
    Posts:
    423
    I haven't gotten around to using it yet, but I certainly will: Profiler from the wiki

    Seems very simple. Does the job and no more.
     
  4. andymads

    andymads

    Joined:
    Jun 16, 2011
    Posts:
    1,198
    Was wondering about this too. Normal advice is to cache components rather than use the properties over and over, but like the OP says, a GameObject is not a component, so is there any need to cache gameObject?

     
  5. AkilaeTribe

    AkilaeTribe

    Joined:
    Jul 4, 2010
    Posts:
    1,149
    I thought there would be some kind of optimization regarding this (like the Lazy class in C# 4.0). Are you sure about this ?
     
  6. andymads

    andymads

    Joined:
    Jun 16, 2011
    Posts:
    1,198