📅  最后修改于: 2023-12-03 14:48:12.257000             🧑  作者: Mango
在Unity中,struct是值类型(value type)的一种。与类(class)不同,struct是没有继承、成员初始化器或析构函数的。通常情况下,struct的使用场景较少,主要是用于一些小型的数据结构。
声明一个struct类型,可以使用以下语法:
struct MyStruct {
// 成员变量声明
}
struct中的成员变量可以与类相同,使用public、private、protected等关键字修饰。但是,struct中的成员变量不能被初始化,需要在结构体实例化之后,再为其赋值。
例如:
struct MyStruct {
public int x;
private string y;
protected float z;
}
void Start() {
MyStruct structInstance;
structInstance.x = 1;
structInstance.y = "hello";
structInstance.z = 1.5f;
}
使用struct时,可以通过new运算符来实例化。实例化后的struct对象是值类型,它存放在栈中。
例如:
struct MyStruct {
public int x;
}
void Start() {
MyStruct structInstance = new MyStruct();
structInstance.x = 1;
}
在函数参数传递中,struct对象会被完全复制一份,而不是像类一样只传递引用。
例如:
struct MyStruct {
public int x;
}
void SetValue(MyStruct s) {
s.x = 5;
}
void Start() {
MyStruct structInstance;
structInstance.x = 1;
SetValue(structInstance);
}
在调用SetValue函数时,structInstance会被完全复制一份,并传递给函数。函数内的s对象是一个新的struct对象,其x值会被赋值为5。当函数退出时,s对象会被销毁,不会影响原来的structInstance对象。
在Unity中,struct是一种值类型。它没有继承、成员初始化器或析构函数。通常情况下,struct的使用场景较少,主要是用于一些小型的数据结构。在函数参数传递中,struct对象会被完全复制一份,而不是像类一样只传递引用。