Unity3d 值类型
向量结构实例成员
| 实例变量 | 作用 |
| normalized |
返回单位向量(只读) |
| magnitude |
返回向量的长度(只读) |
| sqrMagnitude |
返回这个向量长度的平方(只读) |
| x/y/z/w |
向量的结构方法
| 方法 | 作用 |
| Cross | 两个向量的交叉乘积 |
| Dot | 两个向量的点乘积 |
| Distance | 返回a和b之间的距离 |
| Lerp | 两个向量之间的线性插值 |
点乘积
点乘积的计算方式为:a▪b=|a|*|b|cos<a, b>
可以初略的判断下,当前物体是否朝向另外一个物体,只需计算当前物体的transform.forward向量与(position到目标物体position的向量)的点乘积,大于0则面向另外一个物体。
float angle = Mathf.Acos(Vector3.Dot(a.normalized, b.normalized)) * Mathf.Rad2Deg;
交叉乘积
叉积的定义:c=a*b,其中a,b,c均为向量。
- 其中c垂直与a、b所在的平面。
- |c| = |a| |b| sin<a, b>
- 满足右手法则
其他常见的值类型
| 值类型 | 定义 |
| Color | 用来表示RPGA颜色。其中(r,g,b)定义了RGB颜色,而a组件则定义透明度。四个值访问0-1 |
| Color32 | 使用32位来表示RGBA颜色,和Color一样,但使用32位表示,值范围是0-255之间的byte |
| Ray | 用来表示射线 |
| Touch | 每个touch都有一个自己的ID,Input.GetTouch会放回一个Touch实例 |
| RaycastHit | 用来存储从光线投射碰撞放回的数据。 |
| Bounds |
边界框结构,表示一个轴对齐边界框。一个轴对齐边界框,或AABB的简称,是一个坐标系对齐的盒子, 并完全包围某些物体。由于这个盒子不会相对于轴旋转,它只可以通过center和exter定义,或者有min 和max点定义。 |
| Rect |
Rect结构用来表示一个由x、y位置和width、height大小定义的二维矩形。常见于2D操作以及Unity3D 的GUI系统 |
| Plane |
Plane结构主要用来表示一个平面。 |
装箱和拆箱
装箱:
- 在托管堆中分配内存。由于是将值类型进行引用类型化,因而分配的内存空间除了值类型各个字段所需的内存外,还要加上托管堆所有对象都有的两个额外成员(类型对象指针和同步索引块)
- 将值类型字段复制到新分配的堆内存中。
- 返回对象地址,即对象的引用。
拆箱:仅仅是获取引用的过程,不是装箱的逆过程,将值从托管堆上的对象中复制到值类型的实例中,是拆箱之后紧跟的一步复制过程,而非拆箱本身。
int a = objectA; 这里进行了两个步骤,1、计算右边值(即拆箱)2、将值复制到a中

浙公网安备 33010602011771号