更新日期: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
简化的并不单单是代码行数,而是提升了便捷性、容错性和可读性。
那么,今天的分享到此结束!