Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    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,830
  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,614
    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,614