前言:每日记录自己学习unity的心得和体会,小弟才疏学浅,如有错误的地方,欢迎大佬们指正,感谢~
1.定义结构体
结构体一般用于小型的数据类型,下面定义一个双精度的三维坐标数据为例。
Public struct DoubleVec {}
2.结构体初始化
(1)通常通过构造函数对结构体进行初始化,也可以单独定义后赋值。
结构体
public struct DoubleVec
{
public double x;
public double y;
public double z;
//构造函数
public DoubleVec(double x, double y, double z)
{
this.x = x;
this.y = y;
this.z = z;
}
}
初始化和单独赋值
DoubleVec doubleVec1;
DoubleVec doubleVec2;
void Start()
{
doubleVec1 = new DoubleVec(1, 1, 1);
doubleVec2.x = 3;
Debug.Log("doubleVec1.x=" + doubleVec1.x);
Debug.Log("doubleVec2.x=" + doubleVec2.x);
}
结果
doubleVec1.x=1
doubleVec2.x=3
2)没有对结构体进行初始化或者赋值,直接调用结构体的字段
重新定义一个字段类型多的结构体
public struct DoubleVec
{
public float x;
public float y;
public double z;
public string name;
public Vector3 vec;
public bool bo;
public int[] ints;
}
直接使用字段
DoubleVec doubleVec2;
void Start()
{
Debug.Log("doubleVec2.y=" + doubleVec2.y);
Debug.Log("doubleVec2.vec=" + doubleVec2.vec);
Debug.Log("doubleVec2.name=" + doubleVec2.name);
Debug.Log("doubleVec2.ints=" + doubleVec2.ints);
Debug.Log("doubleVec2.bo=" + doubleVec2.bo);
Debug.Log("doubleVec2.x=" + doubleVec2.x);
}
结果
doubleVec2.y=0 //浮点类型初始为0
doubleVec2.vec=(0.00, 0.00, 0.00)//vecter初始为原点
doubleVec2.name= //字符串为空
doubleVec2.ints= //数组为空
doubleVec2.bo=False //bool为false
doubleVec2.x=0
3)构造函数
实例构造函数:初始化字段信息,构造函数参数必须对没有字段进行赋值
静态构造函数:当结构体构造实例时,静态构造函数会自动调用一次;不带任何参数,不带修饰符。
public struct DoubleVec
{
public double x;
public double y;
public double z;
//构造函数
public DoubleVec(double x, double y, double z)
{
this.x = x;
this.y = y;
this.z = z;
}
//静态构造函数
static DoubleVec()
{
Debug.Log("被调用");
}
}