Confirmation : no cache needed for "gameObject" property ?

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

  1. Nems

    Nems

    Member

    Joined:
    Jul 18, 2011
    Messages:
    64
    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

    Member

    Joined:
    Sep 19, 2010
    Messages:
    3,707
  3. Tobias J.

    Tobias J.

    New Member

    Joined:
    Feb 21, 2012
    Messages:
    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

    Member

    Joined:
    Jun 16, 2011
    Messages:
    536
    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

    Member

    Joined:
    Jul 4, 2010
    Messages:
    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

    Member

    Joined:
    Jun 16, 2011
    Messages:
    536