📜  unity struct (1)

📅  最后修改于: 2023-12-03 14:48:12.257000             🧑  作者: Mango

Unity Struct

在Unity中,struct是值类型(value type)的一种。与类(class)不同,struct是没有继承、成员初始化器或析构函数的。通常情况下,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

使用struct时,可以通过new运算符来实例化。实例化后的struct对象是值类型,它存放在栈中。

例如:

struct MyStruct {
    public int x;
}

void Start() {
    MyStruct structInstance = new MyStruct();
    structInstance.x = 1;
}
传递struct

在函数参数传递中,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对象会被完全复制一份,而不是像类一样只传递引用。