关于unity结构体struct和类class的使用细节和注意事项!

        今天在项目中用到了结构体来储存一些不同类型的数据,结构体目的是在任意地方调用和修改其中的数据信息(相信这里对结构体比较了解的人已经发现问题所在了)。当我决定用结构体的那一刻,我就已经走上了一条错误的道路上了。于是我花了白白的一天去各方面找问题哭哭。下面我来分析结构体的用处:

        struct结构体一般我们用来存储复杂的相关联的一些数据,它和类有很多相似性。类我们一般理解为方法和数据的整合。

        unity中最常用的结构体就是Vector2,3。结构体的内存是在栈中开辟,所以其内存回收比较容易。在update里new新的结构体也不会影响游戏的帧数。注意其只能是值传递,其相当于自带了“只读属性”,只有直接修改它的值,想要通过函数返回(强制拷贝返回),或拷贝对象来修改结构体中的数据值是不可能的。这就造成了我的问题:在其他定义域想要修改结构体的值是非常难的,而且极不方便(它传递的是拷贝后的数据,修改后不会对原结构体造成影响)。这显然和项目的需求不同。它的值传递属性是语言定死了的。

        再说一下类和它的区别:类的内存是在堆中开辟,所以其内存回收较难。在update里new一个对象会对游戏帧数造成影响。它是引用传递(因为类对象可能会很大,这种传递地址的方式会显著提高效率),在任何地方修改它都会对原对象造成影响。类可以继承其他类,结构体不行。

       类和结构体在很多地方是不一样的,但他们各有千秋,应用领域不同,最需要注意的是他们的传递方式!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值