美文网首页
TransformEx扩展类

TransformEx扩展类

作者: ShawnWeasley | 来源:发表于2020-07-15 19:03 被阅读0次

写了一个Transform的扩展类,可以单独设置Position的x或者直接设置Scale的整体缩放大小。
如果对静态类不了解的可以参考这里:https://www.jianshu.com/p/17ee1c7f23a5
先看一下调用方式:

using UnityEngine;

public class Test : MonoBehaviour
{
    Transform player;
    // Start is called before the first frame update
    void Start()
    {
        player = this.transform;
        player.SetLocalScale(5);
        player.Reset();
    }
}

扩展类如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// Transform扩展类
/// </summary>
public static partial class TransformEx
{
    /// <summary>
    /// 设置位置x
    /// </summary>
    /// <param name="transform"></param>
    /// <param name="x">x</param>
    public static void SetPositionX(this Transform transform, float x)
    {
        var localPos = transform.localPosition;
        localPos.x = x;
        transform.localPosition = localPos;
    }

    /// <summary>
    /// 设置位置y
    /// </summary>
    /// <param name="transform"></param>
    /// <param name="y">y</param>
    public static void SetPositionY(this Transform transform, float y)
    {
        var localPos = transform.localPosition;
        localPos.y = y;
        transform.localPosition = localPos;
    }

    /// <summary>
    /// 设置位置z
    /// </summary>
    /// <param name="transform"></param>
    /// <param name="z">z</param>
    public static void SetPositionZ(this Transform transform, float z)
    {
        var localPos = transform.localPosition;
        localPos.z = z;
        transform.localPosition = localPos;
    }

    /// <summary>
    /// 设置欧拉角x
    /// </summary>
    /// <param name="transform"></param>
    /// <param name="x">x</param>
    public static void SetEulerAnglesX(this Transform transform, float x)
    {
        var localEulerAngles = transform.localEulerAngles;
        localEulerAngles.x = x;
        transform.localEulerAngles = localEulerAngles;
    }

    /// <summary>
    /// 设置欧拉角y
    /// </summary>
    /// <param name="transform"></param>
    /// <param name="y">y</param>
    public static void SetEulerAnglesY(this Transform transform, float y)
    {
        var localEulerAngles = transform.localEulerAngles;
        localEulerAngles.y = y;
        transform.localPosition = localEulerAngles;
    }

    /// <summary>
    /// 设置欧拉角z
    /// </summary>
    /// <param name="transform"></param>
    /// <param name="z">z</param>
    public static void SetEulerAnglesZ(this Transform transform, float z)
    {
        var localEulerAngles = transform.localEulerAngles;
        localEulerAngles.z = z;
        transform.localEulerAngles = localEulerAngles;
    }

    /// <summary>
    /// 设置大小x
    /// </summary>
    /// <param name="transform"></param>
    /// <param name="x">x</param>
    public static void SetLocalScaleX(this Transform transform, float x)
    {
        var localScale = transform.localScale;
        localScale.x = x;
        transform.localScale = localScale;
    }

    /// <summary>
    /// 设置大小y
    /// </summary>
    /// <param name="transform"></param>
    /// <param name="y">y</param>
    public static void SetLocalScaleY(this Transform transform, float y)
    {
        var localScale = transform.localScale;
        localScale.y = y;
        transform.localScale = localScale;
    }

    /// <summary>
    /// 设置大小z
    /// </summary>
    /// <param name="transform"></param>
    /// <param name="z">z</param>
    public static void SetLocalScaleZ(this Transform transform, float z)
    {
        var localScale = transform.localScale;
        localScale.z = z;
        transform.localScale = localScale;
    }

    /// <summary>
    /// 设置大小
    /// </summary>
    /// <param name="transform"></param>
    /// <param name="scale">scale</param>
    public static void SetLocalScale(this Transform transform, float scale)
    {
        var localScale = Vector3.one * scale;
        transform.localScale = localScale;
    }

    /// <summary>
    /// 设置大小缩放倍数
    /// </summary>
    /// <param name="transform"></param>
    /// <param name="multiple">缩放倍数</param>
    public static void SetLocalScaleMultiple(this Transform transform, float multiple)
    {
        var localScale = transform.localScale * multiple;
        transform.localScale = localScale;
    }

    /// <summary>
    /// 重置位置、角度、缩放大小
    /// </summary>
    /// <param name="transform"></param>
    public static void Reset(this Transform transform)
    {
        transform.localPosition = Vector3.zero;
        transform.localScale = Vector3.one;
        transform.localRotation = Quaternion.identity;
    }
}

相关文章

  • TransformEx扩展类

    写了一个Transform的扩展类,可以单独设置Position的x或者直接设置Scale的整体缩放大小。如果对静...

  • RandomEx扩展类

    和TransformEx扩展相同,为随机写一个Ex扩展,目前只写了一个方法,后续会更新增加方法。如果对静态类不了解...

  • (SPI)3.dubbo spi代码分析

    看三个方法,静态扩展类,adapter扩展类,activate扩展类。先看getExtension 获取实现类对象...

  • JQuery插件

    类扩展: 对象扩展:

  • Kotlin-面向对象-进阶

    扩展 扩展方法 Kotlin支持扩展方法和扩展属性。语法:被扩展的类/接口名.方法名() 父类不能使用子类的扩展方...

  • 类扩展

    类扩展 (Class Extension也有人称为匿名分类) 作用:能为某个类附加额外的属性,成员变量,方法声明一...

  • 类扩展

    Method Swizzling是改变一个selector的实际实现的技术。通过这一技术,我们可以在运行时通过修改...

  • 类扩展

    1.类扩展:为某一个类扩充私有成员变量和方法,写在.m文件中, 英文名Class Estension 格式:@in...

  • 扩展类

    扩展类是一种静态的一种类的调用方法,通过实例化进行调用。利用this进行指正该类,有参数的时候直接在后面追加参数。...

  • 22章:类扩展

    类扩展 .h implemention 涉及实现细节的属性和方法,才在类扩展中声明。类扩展是一组私有的声明。只有类...

网友评论

      本文标题:TransformEx扩展类

      本文链接:https://www.haomeiwen.com/subject/aovjhktx.html