Skip to content

Unity 常用结构体 Struct

unity-common-structs-system

先记住一句话

Unity 里的很多常用数据都是 struct,也就是值类型。 它们更像“一包小数据”,比如位置、方向、颜色、矩形、射线命中信息。

常见结构体:

c
Vector2
Vector3
Quaternion
Color
Color32
Rect
Bounds
Ray
RaycastHit
LayerMask
Vector2Int
Vector3Int
Matrix4x4

最常用:Vector3

Vector3 表示 3D 位置、方向、速度。

c
Vector3 pos = new Vector3(0f, 1f, 0f);
transform.position = pos;

Vector3 dir = target.position - transform.position;
float distance = dir.magnitude;
Vector3 moveDir = dir.normalized;

常用静态值:

c
Vector3.zero
Vector3.one
Vector3.up
Vector3.forward
Vector3.right

Quaternion:旋转

Unity 用 Quaternion 表示旋转。初学不要手动改它的 x/y/z/w

c
transform.rotation = Quaternion.Euler(0f, 90f, 0f);

Vector3 dir = target.position - transform.position;
transform.rotation = Quaternion.LookRotation(dir);

Color:颜色

Colorr/g/b/a0 到 1

c
Color red = new Color(1f, 0f, 0f, 1f);
Color halfAlpha = new Color(1f, 1f, 1f, 0.5f);

image.color = Color.Lerp(Color.red, Color.green, 0.5f);

Color320 到 255

c
Color32 red32 = new Color32(255, 0, 0, 255);

Ray / RaycastHit / LayerMask 射线检测三件套:

c
Ray ray = new Ray(origin, direction);

if (Physics.Raycast(ray, out RaycastHit hit, 100f, groundMask))
{
    Debug.Log(hit.point);
    Debug.Log(hit.collider.name);
}

Ray:从哪里往哪里射。 RaycastHit:打中了什么,命中点在哪。 LayerMask:只检测哪些层。

结构体最容易踩的坑

因为 struct 是值类型,赋值会复制一份。

这个写法通常不行:

c
transform.position.x = 5f;

正确写法:

c
Vector3 p = transform.position;
p.x = 5f;
transform.position = p;

你要理解成:先把 position 这包数据拿出来,改完以后,再整包放回去。

学习顺序

先学 Vector2 / Vector3。 再学 Quaternion。 再学 Color / Color32。 然后学 Ray / RaycastHit / LayerMask。 最后再补 Rect / Bounds / Vector2Int / Vector3Int / Matrix4x4

参考链接

文章评价

读完这篇,留下你的看法

暂无审核通过的评价。

登录账号后才能评价。

本站访客数0总站访问量0本页访问量0