更新日期:2024年5月14日。
Github源码:[点我获取源码]
Gitee源码:[点我获取源码]
索引
- Location
 - 定义Location
 - 复制Location变量的值
 - 复制Transform组件的Location值
 - 粘贴Location变量的值
 - 粘贴Location值到Transform组件
 - 在代码中使用Location
 
Location
HT.Framework.Location是一个自定义的数据类型,使用Location来获取、设置Transform组件的位置、旋转、缩放等(局部坐标),将更具便捷性和直观性。
我们可以查看他的定义,其实很简单,就是包装了三个值:
namespace HT.Framework
{
    /// <summary>
    /// 物体位置(包含局部坐标、局部旋转、局部缩放)
    /// </summary>
    [Serializable]
    public sealed class Location
    {
        /// <summary>
        /// 局部坐标
        /// </summary>
        public Vector3 Position;
        /// <summary>
        /// 局部旋转
        /// </summary>
        public Vector3 Rotation;
        /// <summary>
        /// 局部缩放
        /// </summary>
        public Vector3 Scale;
    }
}
 
定义Location
首先,定义一个Location变量:
    [Label("位置")] public Location Loc;
 
回到Unity编辑器中,查看此属性的检视器面板:
 
复制Location变量的值
我们可以看到Location变量的后面有一个铅笔图标,点击这个按钮,并选择Copy,可以复制此Location变量的值:
 
复制Transform组件的Location值
我们在Transform组件上点击鼠标右键,并选择Copy => Location,可以复制此Transform组件的Location值:
 
粘贴Location变量的值
点击Location变量后面的铅笔按钮,并选择Paste,可以将已复制(从其他Location复制,或Transform组件复制而来)的值粘贴到此Location变量:

粘贴Location值到Transform组件
同理,我们在Transform组件上点击鼠标右键,并选择Paste => Location,可以将已复制(从其他Location复制,或Transform组件复制而来)的Location值粘贴到此Transform组件:
 
 至此,在编辑器中复制粘贴Transform组件的位置、旋转、缩放等将相当便捷。
在代码中使用Location
一个常见的例子,将物体A的位置、旋转、缩放(局部坐标)等属性设置给物体B,常规的做法如下:
public class Test : HTBehaviour
{
    public GameObject A;
    public GameObject B;
    protected override void Awake()
    {
        base.Awake();
        B.transform.localPosition = A.transform.localPosition;
        B.transform.localRotation = A.transform.localRotation;
        B.transform.localScale = A.transform.localScale;
    }
}
 
使用Location简化代码后:
public class Test : HTBehaviour
{
    public GameObject A;
    public GameObject B;
    protected override void Awake()
    {
        base.Awake();
        B.transform.SetLocation(A.transform.GetLocation());
    }
}
 
当然,Location简化的并不单单是代码行数,而是提升了便捷性、容错性和可读性。
那么,今天的分享到此结束!



















