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

news2024/9/20 22:39:39

【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对象,我们在编译器中把该对象赋值过去就行了

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/432229.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【软考备战·希赛网每日一练】2023年4月18日

文章目录 一、今日成绩二、错题总结第一题第二题第三题 三、知识查缺 题目及解析来源:2023年04月18日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析: MTTF:平均无故障时间 MTTR:平均故障修复时间 可用性/可靠性MTTF…

一文入门Typrscript和Vue3

一、TypeScript快速上手 在TypeScript专栏已经详细介绍过TypeScript,在此总结一下TypeScript和Vue3的基础知识。 1. 初识 TypeScript 1.1 TypeScript 的介绍 TypeScript是一种由微软开发的开源、跨平台的编程语言。它是JavaScript的超集,最终会被编译为JavaScrip…

Python轻量级Web框架Flask(9)——图书馆项目

1、项目要求: 创建一个项目,用来说明出版社,书籍和作者的关系。作者和书籍之间的关系:1对多(一本书由一个作者完成,一本书可以有多个创作者)出版社和书籍之间的关系:多对多&#xf…

day15 消息队列

目录 消息队列 消息队列的使用 发送消息 消息的接收 消息队列的控制 消息队列 概念: 消息队列是system V IPC对象的一种; 消息队列有消息队列ID来唯一标识; 消息队列就是一个消息的列表。用户可以在消息队列中添加消息、读取消息等&a…

有介质的高斯定理详细证明(电偶极子模型)以及例题讲解

目录 静电场中的电介质 电极化强度的引入 电偶极子模型的计算 电介质极化过程 极化电荷引入 推导 各向同性和线性的电介质 例题 静电场中的电介质 电介质与导体的区别:所有的粒子被束缚在原子核周围(限制空间) 电介质分为两种 1.无…

OldWang带你了解MySQL(十)

文章目录 🔥MySQL事务🔥使用事务🔥事务的并发问题🔥MySQL的用户管理🔥MySQL分页查询 🔥MySQL事务 事务简介 事务是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完…

【网络小知识】当我在浏览器url输入文本后的解析流程/http协议对比https协议

当我们在地址栏输入信息之后,我们会得到浏览器给我们一个返回的信息,那么这个信息怎么出来的?且看下文~~~ 目录 ⭐一、浏览器url解析流程⭐二、http协议对比https协议 ⭐一、浏览器url解析流程 在浏览器地址栏输入文本后,比如 “…

window.postMessage()接收不到信息(失效)

问题描述 按照正常的代码逻辑,应该是这个样子,通过iframe打开子窗口,能够正常通信。 // 接收端(父窗口) window.onmessage function (e) {// 逻辑代码 }// 发送端(子窗口) window.parent.po…

第一次参加CSDN周赛,这体验很难说···

👨‍💻个人主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 本文章收录于专栏 【CSDN周赛】 本篇文章目录🌏前言🌏一、勾股数🌸题目描述🌸题解&…

Android Activity 了解

前言 : Android 系统的四大组件分别是 1 活动 (Activity) 2 服务(Service) 3 广播接收器(Broadcast Receiver) 4 内容提供器 (Content Provider) 其中活动是所有安卓应用程序的…

rust闭包(Closure)

闭包(Closure) 闭包在现代化的编程语言中普遍存在。闭包是一种匿名函数,它可以赋值给变量也可以作为参数传递给其它函数,不同于函数的是,它允许捕获调用者作用域中的值。Rust 闭包在形式上借鉴了 Smalltalk 和 Ruby 语言,与函数最…

无聊小知识.04 以下代码会输出什么?

1、前言 今天同事给我看了一段代码,然后这段简单的代码,我却陷入了沉思。 2、代码 String string ""; try {string "123";return string; } finally {string "234"; } 这段代码,string最终是“123”还是…

【SpringSecurity】学习笔记(一)

学习笔记一、SpringSecurity 简介二、创建测试项目2.1、引入依赖2.2、测试三、SpringSecurity基本原理3.1、过滤器链3.1.1、FilterSecurityInterceptor3.1.2、ExceptionTranslationFilter3.1.3、UsernamePasswordAuthenticationFilter3.2、过滤器加载过程3.3、两个重要的接口3.…

看完这篇,保证你学网络安全一帆风顺!

网络安全入门很难吗?总有人抱怨黑客入门太难了,然后仔细了解之后却发现,觉得难是因为看的视频教程都不是配套的,都是这里学一点、那里学一点,脑子里连基本的框架都没有。更过分的是,有的人学了好几个月&…

uniapp - 微信小程序端引入 Echarts 图表及使用详细教程,简单快速的解决方案(拒绝复杂的过程,附带详细的使用示例保姆级教程)

效果图 现在各种平台的文章都太乱了,基本上实测无效。。。 帮你在uniapp开发中,微信小程序平台端使用 echats 图表的详细教程,快速并且简单轻松搞定。 下面是最后的运行结果,随便用的一个图表进行展示,图表更多用法详见文档!

用正则去掉所有HTML标签,保留指定标签

保留单个,如保留img标签:str.replace(/]*>/ig,) 保留多个,如保留strong、em、p、u标签:str.replace(/]*>/ig,) 清除所有标签,就是去掉保留指定标签的部分了:str.replace(/]*>/g, ) replace 正则匹…

(学习日记)2023.4.18

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

java基础——迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类

迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类 第一章 Iterator迭代器 1.1 Iterator接口 在程序开发中,经常需要遍历集合中的所有元素。针对这种需求,JDK专门提供了一个接口java.util.Iterator。 想要遍历Collection集合&…

【Leetcode】最小栈、栈的压入、弹出序列、逆波兰表达式求值

文章目录最小栈栈的压入、弹出序列逆波兰表达式求值最小栈 题目要求是在常数时间内检索到最小的元素的栈,思路是每当栈中存放一个更小的数据时,就将它入栈,相同的值也要入栈。 class MinStack { public:MinStack() {}//对自定义类型&#xf…

梭哈大模型,阿里云成了跟风者?

伴随AI大模型潘多拉魔盒打开,云市场GameChanger已到来。对阿里云这个昔日老大哥而言,从“领先者”变为“跟风者”,是否还有机会去重塑行业规则? 这可能是张勇全面掌舵阿里巴巴7年以来,事关未来最重要的一次“梭哈”。 …