前言:每日记录自己学习unity的心得和体会,小弟才疏学浅,如有错误的地方,欢迎大佬们指正,感谢~
1.结构体方法
1)get方法
可以直接在结构体变量后使用,下面以求模长为例
DoubleVec doubleVec1;
void Start()
{
doubleVec1 = new DoubleVec(1, 1, 1);
//这里直接可以点出方法
double mag= doubleVec1.Magnitude;
Debug.Log("mag=" + mag);
}
创建的方法
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;
}
//必须用get方法给方法赋值
public double Magnitude {
get {return magnitude(); }
}
//求模长的方法
double magnitude()
{
double a = getLength(x, y);
double b = getLength(a, z);
return b;
double getLength(double a, double b)
{
return Math.Sqrt(a * a + b * b);
}
}
}
(2)结构体传参方法
可以在结构类型后面点出方法,传入参数进行逻辑处理,同样以求模长为例
DoubleVec doubleVec1;
void Start()
{
doubleVec1 = new DoubleVec(1, 1, 1);
//这里是同结构体类型点出方法,参数为结构体变量
double mag= DoubleVec.MagnitudeVec(doubleVec1);
Debug.Log("mag=" + mag);
}
创建方法
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;
}
//这里要用静态方法,参数与结构体本身的字段没有关系
public static double MagnitudeVec(DoubleVec vec)
{
return magnitude(vec);
}
//运算方法也要静态
static double magnitude(DoubleVec vec)
{
double a = getLength(vec.x, vec.y);
double b = getLength(a, vec.z);
return b;
double getLength(double a, double b)
{
return Math.Sqrt(a * a + b * b);
}
}
}
这种方法是很独立的,与结构体本身没有关联,只能算逻辑上的分类
3)逻辑运算
这里的逻辑运算包括:加、减、乘、除、大于、小于、等于、不等于等。下面以实现加法为例。
DoubleVec doubleVec1;
DoubleVec doubleVec2;
void Start()
{
doubleVec1 = new DoubleVec(1, 1, 1);
doubleVec2 = new DoubleVec(2, 2, 2);
DoubleVec doubleVec3 = doubleVec1 + doubleVec2;
}
创建方法
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;
}
//使用operator运算符重载方法
//参数中必须有一个为DoubleVec
public static DoubleVec operator +(DoubleVec a, DoubleVec b)
{
return new DoubleVec(a.x + b.x, a.y + b.y, a.z + b.z);
}
}