【Unity入门】14.值类型和引用类型

【Unity入门】值类型和引用类型

    大家好,我是Lampard~~

    欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢

(一)值类型

(1)C#的值类型

1. 布尔类型(bool)

2. 字符类型(char)

3. 整数类型(byte、sbyte、short、ushort、int、uint、long、ulong)

4. 浮点数类型(float、double、decimal)

5. 枚举类型(enum)

6. 结构体类型(struct )

    如上节课我们外置的速度参数,就是一个浮点类型,也就是一个值类型

(2)Unity的值类型

1. 向量类型(Vector2、Vector3、Vector4)

2. 颜色类型(Color、Color32)

3. 矩阵类型(Matrix4x4)

4. 四元数类型(Quaternion)

5. 边界框类型(Bounds)

6. 射线类型(Ray)

7. 平面类型(Plane)

8. 时间类型(TimeSpan)

    Unity在C#的基础上引入了一些特有的值类型, 比如我们访问transform组件的position属性时,或者访问欧拉角时,取得的都是一个Vector3类型,它也是一个值类型

    

(二)值类型和引用类型的区别

(1)引用类型

    引用类型就不展开细说了,一切由类实例化出来的对象都是引用类型,如下:

1. 资源类型(Resource)

2. 游戏对象类型(GameObject)

3. 组件类型(Component)

4. 材质类型(Material)

5. 纹理类型(Texture)

6. 脚本类型(Script)

7. 动画类型(Animation/Animator)

8. 声音类型(AudioSource)

9. 碰撞器类型(Collider)

10. 刚体类型(Rigidbody)

11. 粒子类型(Particle System)

12. 光源类型(Light)

13. UI组件类型(UI)

14. 场景对象类型(Scene)

15. 引用类型的数组类型(List、Dictionary、Array)

(2)引用类型和值类型的区别

    值类型和引用类型是C#中的两种不同的数据类型,它们的主要区别在于:

1. 存储方式:值类型的值直接存储在栈上,而引用类型的值存储在堆上,栈和堆是计算机内存中的两个不同区域。

2. 复制方式:值类型在进行复制时,会直接复制其值;而引用类型在进行复制时,只会复制指向堆上对象的引用,而不会复制整个对象。

3. 生命周期:值类型的生命周期是由其所在的作用域控制的,一旦超出作用域,即被自动释放;而引用类型的生命周期则由垃圾回收器控制,只有在没有任何引用指向堆上对象时,对象才会被回收。

4. 可变性:值类型是不可变的,一旦被赋值,其值就无法修改;而引用类型是可变的,可以在任何时候修改其状态。

(三)外置引用类型参数

   我们之前有做到让小车朝着红旗移动的功能,当时我们获取红旗的方式是通过GameObject.Find这个静态方法来寻得红旗

    void Start()
    {
        flag = GameObject.Find("红旗");
        this.transform.LookAt(flag.transform);
    }

    这样的做法一方面,会容易出错,比如存在多个红旗对象呢?另一方面也不方便,我们可能无法得知具体对象的名称

    因此我们可以把红旗定义为一个外置的GameObject对象,我们在编译器中把该对象赋值过去就行了

好啦今天就到这里,感谢阅读!!!
点赞,关注!!!

猜你喜欢

转载自blog.csdn.net/cooclc/article/details/130232308
今日推荐