The TransformHandle
API is an alternative to the Transform
API. Unlike the Transform
component (a managed class), TransformHandle
is an unmanaged struct
, which makes it fully compatible with the Burst compiler.
While the TransformHandle
API covers the same core operations as the Transform
API, its design introduces several key differences described on this page.
The TransformHandle
API functionality is equivalent to the Transform
API, the key differences are in the way you access it, and in the implementation details.
Transform API (Unity 6.2 and earlier):
GameObject.transform
property.transform
property returns a Transform
component reference (managed type).TransformHandle
API in Unity 6.TransformHandle API (Unity 6.3 and later):
gameObject.transformHandle
or transform.GetTransformHandle
(where transform
is the Transform
component).TransformHandle
struct (unmanaged type).The following methods and properties from Transform
APIs are not available in TransformHandle
API:
GetSiblingIndex
/ SetSiblingIndex
Find
hasChanged
propertyThe following TransformHandle
API elements don’t have an equivalent in the Transform
API.
TransformHandle.DirectChildrenEnumerable
represents an enumerable of the direct children of a transformHandle, and this enumerable returns a DirectChildrenEnumerator when enumerated.
TransformHandle.DirectChildrenEnumerator
is an enumerator that goes through the direct children of a transform.
TransformHandle.DirectChildren
returns a DirectChildrenEnumerable of this transform, which you can use to iterate over direct children with a foreach loop.
TransformHandle.GetDirectChildrenEnumerator
returns a DirectChildrenEnumerator of this transform, which you can use to manually iterate over direct children.
The following common operations have a different implementation in TransformHandle
API.
Check if a transform is valid:
transform != null
TransformHandle.IsValid
Iterate the direct children of the transform:
foreach (Transform t in transform)
foreach (TransformHandle t in handle.DirectChildren)
Set a parent of a transform to None
:
Transform: transform.SetParent(null)
TransformHandle:
transformHandle.SetParent(TransformHandle.None)
or
TransformHandle h = transformHandle;
h.parent = TransformHandle.None;
For specific examples on how to use the API, refer to TransfromHandle API examples.
The following methods are functionally equivalent, but have different argument types or return types (Transform
, or TransformHandle
depending on the API they are called from).
Different argument types:
IsChildOf
LookAt
SetParent
Translate
(overload)Different return types:
GetChild
parent
root