zl程序教程

您现在的位置是:首页 >  其它

当前栏目

Unity 使用this关键字进行函数拓展 - Transform

函数 进行 Unity 关键字 this 拓展 transform 使用
2023-09-27 14:19:56 时间

Example:

private void Start()
{
    transform
        .Parent(null)
        .NullParent()
        .CopyTransformValues(transform)
        .SiblingIndex(0)
        .AsFirstSibling()
        .AsLastSibling()

        .Position(Vector3.zero)
        .Position(0f, 0f, 0f)
        .PositionX(0f)
        .PositionY(0f)
        .PositionZ(0f)
        .PositionIdentity()

        .Rotation(Quaternion.identity)
        .Rotation(0f, 0f, 0f, 0f)
        .RotationX(0f)
        .RotationY(0f)
        .RotationZ(0f)
        .RotationW(0f)
        .RotationIdentity()

        .EulerAngles(Vector3.zero)
        .EulerAngles(0f, 0f, 0f)
        .EulerAnglesX(0f)
        .EulerAnglesY(0f)
        .EulerAnglesZ(0f)
        .EulerAnglesIdentity()

        .LocalPosition(Vector3.zero)
        .LocalPosition(0f, 0f, 0f)
        .LocalPositionX(0f)
        .LocalPositionY(0f)
        .LocalPositionZ(0f)
        .LocalPositionIdentity()

        .LocalRotation(Quaternion.identity)
        .LocalRotation(0f, 0f, 0f, 0f)
        .LocalRotationX(0f)
        .LocalRotationY(0f)
        .LocalRotationZ(0f)
        .LocalRotationW(0f)
        .LocalRotationIdentity()

        .LocalEulerAngles(Vector3.zero)
        .LocalEulerAngles(0f, 0f, 0f)
        .LocalEulerAnglesX(0f)
        .LocalEulerAnglesY(0f)
        .LocalEulerAnglesZ(0f)
        .LocalEulerAnglesIdentity()

        .LocalScale(Vector3.zero)
        .LocalScale(0f, 0f, 0f)
        .LocalScaleX(0f)
        .LocalScaleY(0f)
        .LocalScaleZ(0f);
}

Extension:

    /// <summary>
    /// The extension of transform.
    /// </summary>
    public static class TransformExtension
    {
        /// <summary>
        /// Set parent as target.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="parent"></param>
        /// <param name="worldPositionStays"></param>
        /// <returns></returns>
        public static T Parent<T>(this T self, Component parent, bool worldPositionStays = true) where T : Component
        {
            self.transform.SetParent(parent ? parent.transform : null, worldPositionStays);
            return self;
        }
        /// <summary>
        /// Set parent as null.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static T NullParent<T>(this T self) where T : Component
        {
            self.transform.SetParent(null);
            return self;
        }
        /// <summary>
        /// Copy the transfrom valus from target.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="target"></param>
        /// <returns></returns>
        public static T CopyTransformValues<T>(this T self, Component target) where T : Component
        {
            self.transform.position = target.transform.position;
            self.transform.eulerAngles = target.transform.eulerAngles;
            self.transform.localScale = target.transform.localScale;
            return self;
        }

        #region SiblingIndex
        /// <summary>
        /// Set sibling index.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="index"></param>
        /// <returns></returns>
        public static T SiblingIndex<T>(this T self, int index) where T : Component
        {
            self.transform.SetSiblingIndex(index);
            return self;
        }
        /// <summary>
        /// Set the sibling index as first.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static T AsFirstSibling<T>(this T self) where T : Component
        {
            self.transform.SetAsFirstSibling();
            return self;
        }
        /// <summary>
        /// Set the sibling index as last.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static T AsLastSibling<T>(this T self) where T : Component
        {
            self.transform.SetAsLastSibling();
            return self;
        }
        #endregion

        #region Position
        /// <summary>
        /// Get the position.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static Vector3 GetPosition<T>(this T self) where T : Component
        {
            return self.transform.position;
        }
        /// <summary>
        /// Set the position.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="pos"></param>
        /// <returns></returns>
        public static T Position<T>(this T self, Vector3 pos) where T : Component
        {
            self.transform.position = pos;
            return self;
        }
        /// <summary>
        /// Set the position.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="z"></param>
        /// <returns></returns>
        public static T Position<T>(this T self, float x, float y, float z) where T : Component
        {
            Vector3 pos = self.transform.position;
            pos.x = x;
            pos.y = y;
            pos.z = z;
            self.transform.position = pos;
            return self;
        }
        /// <summary>
        /// Set the position x value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="x"></param>
        /// <returns></returns>
        public static T PositionX<T>(this T self, float x) where T : Component
        {
            Vector3 pos = self.transform.position;
            pos.x = x;
            self.transform.position = pos;
            return self;
        }
        /// <summary>
        /// Set the position y value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        public static T PositionY<T>(this T self, float y) where T : Component
        {
            Vector3 pos = self.transform.position;
            pos.y = y;
            self.transform.position = pos;
            return self;
        }
        /// <summary>
        /// Set the position z value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="z"></param>
        /// <returns></returns>
        public static T PositionZ<T>(this T self, float z) where T : Component
        {
            Vector3 pos = self.transform.position;
            pos.z = z;
            self.transform.position = pos;
            return self;
        }
        /// <summary>
        /// Identity the position.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static T PositionIdentity<T>(this T self) where T : Component
        {
            self.transform.position = Vector3.zero;
            return self;
        }
        #endregion

        #region Rotation
        /// <summary>
        /// Get the rotation.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static Quaternion GetQuaternion<T>(this T self) where T : Component
        {
            return self.transform.rotation;
        }
        /// <summary>
        /// Set the rotation.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="rot"></param>
        /// <returns></returns>
        public static T Rotation<T>(this T self, Quaternion rot) where T : Component
        {
            self.transform.rotation = rot;
            return self;
        }
        /// <summary>
        /// Set the rotation.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="z"></param>
        /// <param name="w"></param>
        /// <returns></returns>
        public static T Rotation<T>(this T self, float x, float y, float z, float w) where T : Component
        {
            Quaternion rot = self.transform.rotation;
            rot.x = x;
            rot.y = y;
            rot.z = z;
            rot.w = w;
            self.transform.rotation = rot;
            return self;
        }
        /// <summary>
        /// Set the rotation x value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="x"></param>
        /// <returns></returns>
        public static T RotationX<T>(this T self, float x) where T : Component
        {
            Quaternion rot = self.transform.rotation;
            rot.x = x;
            self.transform.rotation = rot;
            return self;
        }
        /// <summary>
        /// Set the rotation y value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        public static T RotationY<T>(this T self, float y) where T : Component
        {
            Quaternion rot = self.transform.rotation;
            rot.y = y;
            self.transform.rotation = rot;
            return self;
        }
        /// <summary>
        /// Set the rotation z value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="z"></param>
        /// <returns></returns>
        public static T RotationZ<T>(this T self, float z) where T : Component
        {
            Quaternion rot = self.transform.rotation;
            rot.z = z;
            self.transform.rotation = rot;
            return self;
        }
        /// <summary>
        /// Set the rotation w value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="w"></param>
        /// <returns></returns>
        public static T RotationW<T>(this T self, float w) where T : Component
        {
            Quaternion rot = self.transform.rotation;
            rot.w = w;
            self.transform.rotation = rot;
            return self;
        }
        /// <summary>
        /// Identity the rotation.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static T RotationIdentity<T>(this T self) where T : Component
        {
            self.transform.rotation = Quaternion.identity;
            return self;
        }
        #endregion

        #region EulerAngles
        /// <summary>
        /// Get the euler angles.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static Vector3 GetEulerAngles<T>(this T self) where T : Component
        {
            return self.transform.eulerAngles;
        }
        /// <summary>
        /// Set the euler angles.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="eulerAngles"></param>
        /// <returns></returns>
        public static T EulerAngles<T>(this T self, Vector3 eulerAngles) where T : Component
        {
            self.transform.eulerAngles = eulerAngles;
            return self;
        }
        /// <summary>
        /// Set the euler angles.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="z"></param>
        /// <returns></returns>
        public static T EulerAngles<T>(this T self, float x, float y, float z) where T : Component
        {
            Vector3 eulerAngles = self.transform.eulerAngles;
            eulerAngles.x = x;
            eulerAngles.y = y;
            eulerAngles.z = z;
            self.transform.eulerAngles = eulerAngles;
            return self;
        }
        /// <summary>
        /// Set the euler angles x value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="x"></param>
        /// <returns></returns>
        public static T EulerAnglesX<T>(this T self, float x) where T : Component
        {
            Vector3 eulerAngles = self.transform.eulerAngles;
            eulerAngles.x = x;
            self.transform.eulerAngles = eulerAngles;
            return self;
        }
        /// <summary>
        /// Set the euler angles y value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        public static T EulerAnglesY<T>(this T self, float y) where T : Component
        {
            Vector3 eulerAngles = self.transform.eulerAngles;
            eulerAngles.y = y;
            self.transform.eulerAngles = eulerAngles;
            return self;
        }
        /// <summary>
        /// Set the euler angles z value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="z"></param>
        /// <returns></returns>
        public static T EulerAnglesZ<T>(this T self, float z) where T : Component
        {
            Vector3 eulerAngles = self.transform.eulerAngles;
            eulerAngles.z = z;
            self.transform.eulerAngles = eulerAngles;
            return self;
        }
        /// <summary>
        /// Identity the euler angles.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static T EulerAnglesIdentity<T>(this T self) where T : Component
        {
            self.transform.eulerAngles = Vector3.zero;
            return self;
        }
        #endregion

        #region LossyScale
        /// <summary>
        /// Get the lossy scale.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static Vector3 GetLossyScale<T>(this T self) where T : Component
        {
            return self.transform.lossyScale;
        }
        #endregion

        #region LocalPosition
        /// <summary>
        /// Get the local position.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static Vector3 GetLocalPosition<T>(this T self) where T : Component
        {
            return self.transform.localPosition;
        }
        /// <summary>
        /// Set the local position.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="localPos"></param>
        /// <returns></returns>
        public static T LocalPosition<T>(this T self, Vector3 localPos) where T : Component
        {
            self.transform.localPosition = localPos;
            return self;
        }
        /// <summary>
        /// Set the local position.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="z"></param>
        /// <returns></returns>
        public static T LocalPosition<T>(this T self, float x, float y, float z) where T : Component
        {
            Vector3 localPos = self.transform.localPosition;
            localPos.x = x;
            localPos.y = y;
            localPos.z = z;
            self.transform.localPosition = localPos;
            return self;
        }
        /// <summary>
        /// Set the local position x value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="x"></param>
        /// <returns></returns>
        public static T LocalPositionX<T>(this T self, float x) where T : Component
        {
            Vector3 localPos = self.transform.localPosition;
            localPos.x = x;
            self.transform.localPosition = localPos;
            return self;
        }
        /// <summary>
        /// Set the local position y value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        public static T LocalPositionY<T>(this T self, float y) where T : Component
        {
            Vector3 localPos = self.transform.localPosition;
            localPos.y = y;
            self.transform.localPosition = localPos;
            return self;
        }
        /// <summary>
        /// Set the local position z value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="z"></param>
        /// <returns></returns>
        public static T LocalPositionZ<T>(this T self, float z) where T : Component
        {
            Vector3 localPos = self.transform.localPosition;
            localPos.z = z;
            self.transform.localPosition = localPos;
            return self;
        }
        /// <summary>
        /// Identity the local position.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static T LocalPositionIdentity<T>(this T self) where T : Component
        {
            self.transform.localPosition = Vector3.zero;
            return self;
        }
        #endregion

        #region LocalRotation
        /// <summary>
        /// Get the local rotation.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static Quaternion GetLocalRotation<T>(this T self) where T : Component
        {
            return self.transform.localRotation;
        }
        /// <summary>
        /// Set the local rotation.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="rot"></param>
        /// <returns></returns>
        public static T LocalRotation<T>(this T self, Quaternion rot) where T : Component
        {
            self.transform.localRotation = rot;
            return self;
        }
        /// <summary>
        /// Set the local rotation.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="z"></param>
        /// <param name="w"></param>
        /// <returns></returns>
        public static T LocalRotation<T>(this T self, float x, float y, float z, float w) where T : Component
        {
            Quaternion rot = self.transform.localRotation;
            rot.x = x;
            rot.y = y;
            rot.z = z;
            rot.w = w;
            self.transform.localRotation = rot;
            return self;
        }
        /// <summary>
        /// Set the local rotation x value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="x"></param>
        /// <returns></returns>
        public static T LocalRotationX<T>(this T self, float x) where T : Component
        {
            Quaternion rot = self.transform.localRotation;
            rot.x = x;
            self.transform.localRotation = rot;
            return self;
        }
        /// <summary>
        /// Set the local rotation y value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        public static T LocalRotationY<T>(this T self, float y) where T : Component
        {
            Quaternion rot = self.transform.localRotation;
            rot.y = y;
            self.transform.localRotation = rot;
            return self;
        }
        /// <summary>
        /// Set the local rotation z value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="z"></param>
        /// <returns></returns>
        public static T LocalRotationZ<T>(this T self, float z) where T : Component
        {
            Quaternion rot = self.transform.localRotation;
            rot.z = z;
            self.transform.localRotation = rot;
            return self;
        }
        /// <summary>
        /// Set the local rotation w value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="w"></param>
        /// <returns></returns>
        public static T LocalRotationW<T>(this T self, float w) where T : Component
        {
            Quaternion rot = self.transform.localRotation;
            rot.w = w;
            self.transform.localRotation = rot;
            return self;
        }
        /// <summary>
        /// Identity the local rotation.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static T LocalRotationIdentity<T>(this T self) where T : Component
        {
            self.transform.localRotation = Quaternion.identity;
            return self;
        }
        #endregion

        #region LocalEulerAngles
        /// <summary>
        /// Get the local euler angles.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static Vector3 GetLocalEulerAngles<T>(this T self) where T : Component
        {
            return self.transform.localEulerAngles;
        }
        /// <summary>
        /// Set the local euler angles.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="localEulerAngles"></param>
        /// <returns></returns>
        public static T LocalEulerAngles<T>(this T self, Vector3 localEulerAngles) where T : Component
        {
            self.transform.localEulerAngles = localEulerAngles;
            return self;
        }
        /// <summary>
        /// Set the local euler angles.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="z"></param>
        /// <returns></returns>
        public static T LocalEulerAngles<T>(this T self, float x, float y, float z) where T : Component
        {
            Vector3 localEulerAngles = self.transform.localEulerAngles;
            localEulerAngles.x = x;
            localEulerAngles.y = y;
            localEulerAngles.z = z;
            self.transform.localEulerAngles = localEulerAngles;
            return self;
        }
        /// <summary>
        /// Set the local euler angles x value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="x"></param>
        /// <returns></returns>
        public static T LocalEulerAnglesX<T>(this T self, float x) where T : Component
        {
            Vector3 localEulerAngles = self.transform.localEulerAngles;
            localEulerAngles.x = x;
            self.transform.localEulerAngles = localEulerAngles;
            return self;
        }
        /// <summary>
        /// Set the local euler angles y value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        public static T LocalEulerAnglesY<T>(this T self, float y) where T : Component
        {
            Vector3 localEulerAngles = self.transform.localEulerAngles;
            localEulerAngles.y = y;
            self.transform.localEulerAngles = localEulerAngles;
            return self;
        }
        /// <summary>
        /// Set the local euler angles z value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="z"></param>
        /// <returns></returns>
        public static T LocalEulerAnglesZ<T>(this T self, float z) where T : Component
        {
            Vector3 localEulerAngles = self.transform.localEulerAngles;
            localEulerAngles.z = z;
            self.transform.localEulerAngles = localEulerAngles;
            return self;
        }
        /// <summary>
        /// Identity the local euler angles.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static T LocalEulerAnglesIdentity<T>(this T self) where T : Component
        {
            self.transform.localEulerAngles = Vector3.zero;
            return self;
        }
        #endregion

        #region LocalScale
        /// <summary>
        /// Get the local scale.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static Vector3 GetLocalScale<T>(this T self) where T : Component
        {
            return self.transform.localScale;
        }
        /// <summary>
        /// Set the local scale.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="localScale"></param>
        /// <returns></returns>
        public static T LocalScale<T>(this T self, Vector3 localScale) where T : Component
        {
            self.transform.localScale = localScale;
            return self;
        }
        /// <summary>
        /// Set the local scale.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="z"></param>
        /// <returns></returns>
        public static T LocalScale<T>(this T self, float x, float y, float z) where T : Component
        {
            Vector3 localScale = self.transform.localScale;
            localScale.x = x;
            localScale.y = y;
            localScale.z = z;
            self.transform.localScale = localScale;
            return self;
        }
        /// <summary>
        /// Set the local scale x value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="x"></param>
        /// <returns></returns>
        public static T LocalScaleX<T>(this T self, float x) where T : Component
        {
            Vector3 localScale = self.transform.localScale;
            localScale.x = x;
            self.transform.localScale = localScale;
            return self;
        }
        /// <summary>
        /// Set the local scale y value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        public static T LocalScaleY<T>(this T self, float y) where T : Component
        {
            Vector3 localScale = self.transform.localScale;
            localScale.y = y;
            self.transform.localScale = localScale;
            return self;
        }
        /// <summary>
        /// Set the local scale z value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <param name="z"></param>
        /// <returns></returns>
        public static T LocalScaleZ<T>(this T self, float z) where T : Component
        {
            Vector3 localScale = self.transform.localScale;
            localScale.z = z;
            self.transform.localScale = localScale;
            return self;
        }
        /// <summary>
        /// Identity the local scale.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static T LocalScaleIdentity<T>(this T self) where T : Component
        {
            self.transform.localScale = Vector3.one;
            return self;
        }
        #endregion

        #region Identity
        /// <summary>
        /// Identity the transform.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static T Identity<T>(this T self) where T : Component
        {
            self.transform.position = Vector3.zero;
            self.transform.eulerAngles = Vector3.zero;
            self.transform.localScale = Vector3.one;
            return self;
        }
        /// <summary>
        /// Identity the local transform.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="self"></param>
        /// <returns></returns>
        public static T LocalIdentity<T>(this T self) where T : Component
        {
            self.transform.localPosition = Vector3.zero;
            self.transform.localEulerAngles = Vector3.zero;
            self.transform.localScale = Vector3.one;
            return self;
        }
        #endregion
    }