Unity脚本 (1) --- 创建脚本以及挂载脚本的本质,脚本模板的修改

news2024/11/16 7:45:04

值类型 --- 在栈区中开辟内存空间并直接存储在栈区中,引用类型 --- 在栈区中开辟内存空间存引用,在堆区中开辟内存空间存数据(有可能堆区中还要开辟引用),然后将堆区中存储数据的内存空间的地址传给引用接收


什么是脚本?

写一个脚本(编程文本文件),挂载到对象上,游戏运行的时候会自动读取对象上挂载的代码并将其运行,使得对象能够根据代码做出对应的反应。 

1.为什么要引入其它的命名空间?

当我们想要使用其它命名空间中的东西的时候,我们就需要引入这个命名空间

(using 命名空间名)

(不引入命名空间也可以,此时使用其它命名空间中的东西就不像引入了命名空间后直接用那么简单了,此时使用前我们需要通过命名空间名 + 点操作符来访问我们需要想使用的对象)

2.命名空间的作用

它最大的一个作用就是避免类重名导致的错误 --- 不同命名空间中的类可以重名,同一命名空间中的类不可以重名

1.Unity开发时,很多的类都需要继承MonoBehaviour类,但并不是所有的类都需要继承它。只有要挂载到游戏物体上的脚本中的类需要继承,如果不需要挂载到游戏物体上的话可以不继承这个类 

2.只要需要用到Unity提供的功能,需要挂载到游戏物体上,就需要继承MonoBehaviour类,反之则不需要继承

3.写好的脚本必须挂载到游戏物体上才会被执行 

1.当我们创建了脚本文件后,编译器就会自动为我们在脚本文件中生成一些基本代码(其中就包括类名),其中需要注意的是编译器自动生成的类的类名和脚本文件名相同,并且最重要的是如果我们在创建完脚本文件后又更改文件的文件名的话,文件中的类名是不会跟着更改的,它依然和最开始的文件名相同(此时如果要改的话需要我们手动去修改)

2.脚本的本质就是一个类,当我们把一个脚本挂载到游戏物体上的时候,实际发生的过程是通过脚本中的类实例化了一个对象挂载到游戏物体上,然后我们就是通过这个对象调用方法来控制游戏物体的

3.其实每一个挂载到游戏物体上的组件都是一个通过对应类实例化的对象,通过这些对象调用方法来控制游戏物体

1.创建一个游戏物体的本质其实就是实例化一个对象,这个游戏对象对应的类是GameObject类

在这个对象中有一个引用数组

2.每当我们给游戏物体挂载一个组件(对象) / 脚本的时候,实际上发生的是一个组件 / 脚本对象通过对应的类实例化出来,然后一个引用被创建并指向组件对象,接着在游戏物体数组中存储这个引用

编译器自动生成的代码中有一些细节部分需要进行修改:

1.每一个方法前面都加上对应的访问级别(默认是private) --- 补充:在C#中,类中的成员方法可以没有访问级别,此时编译器会默认这个方法的访问级别是private(不推荐使用这个功能,因为代码可读性较差)

 2.在脚本中,如果这两个自动生成的方法不会被使用的话,一定要将其删除

之所以要删除是为了优化程序的执行速度,例如Update方法就是一个循环调用的方法,每一帧(0.02s)就会调用一次,如果不用这个方法的最好删除它,提高程序的执行速度

(其实最好的方法就是直接删掉这两个自动生成的方法,等要用的时候再写上)

3.上面所有的操作都是对Unity根据脚本模板自动生成的程序代码进行的修改,如果每一次创建脚本文件后都要修改脚本的话岂不是太麻烦了?

所以Unity允许我们直接修改脚本模板来一劳永逸,以下是修改脚本模板的方法:

一.找到Unity图标,右键选择属性,点开属性后点击打开文件位置

二.在打开的文件中找到Data文件夹,点击后选择Resources文件夹,点进去后选择ScriptsTemplates(脚本模板)文件

三.进去后选择81号文本文件,并用vs方式打开

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

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

相关文章

HTTP 请求走私

目录 0x01 简介 0x02 成因 2.1 Keep-Alive 2.2 Pipeline 2.3 Content-Length 2.4 Transfer-Encoding 0x03 分类 0x04. 攻击 4.1. CL不为0的GET请求 4.2 CL-CL 4.3 CL-TE 4.4 TE-CL 4.5. TE-TE 0x05 防御 参考资料: 0x01 简介 HTTP请求走私是一种干扰…

Mysql优化-全面详解(学习总结---从入门到深化)

Sql性能下降的原因 在程序的运行过程中,我们会发现这样的一个现象,随着程序运行 时间的不断推移以及数据量越来越大,程序响应的时间逐渐变慢, 程序变得卡顿,但最开始的时候并不是这样的,那是什么原因导致 的…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java毕业生回访系统564c4

最近发现近年来越来越多的人开始追求毕设题目的设创、和新颖性。以往的xx管理系统、xx校园系统都过时了。大多数人都不愿意做这类的系统了,确实,从有毕设开始就有人做了。但是很多人又不知道哪些毕设题目才算是新颖、创意。太老土的不想做,创…

RISC-V SiFive U64内核——HPM硬件性能监视器

学习、沉淀、分享,才能有所获~ 文章目录HPM简介性能监控计数器重置行为固定功能性能监控计数器事件可编程性能监控计数器事件选择器寄存器事件选择器编码计数使能寄存器对于性能分析,通常我们会使用Perf工具。而perf中的硬件事件,则需要硬件的…

阿里、腾讯、字节跳动大厂Java岗面试秘籍!(含答案解析)

本文主要是汇集整理了最新的阿里、腾讯、字节跳动大厂面试真题及答案解析,以及面试中被频繁问到的内容,主要作为参考大纲,供大家互相学习。 一、阿里篇(27题) 1.1.1 如何实现一个高效的单向链表逆序输出?…

当我用ChatGPT中学习CNN卷积神经网络时...

本文节选自本人博客:https://www.blog.zeeland.cn/archives/chatgpt-asoihgoihrx Introduction ChatGPT大火,在这一段时间并没有觉得ChatGPT特别厉害,最多就是一个基于生成式对话的NLP模型罢了,直到我看到了AI扮演Linux虚拟机&am…

[附源码]计算机毕业设计基于web的建设科技项目申报管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【Redis】Redisson 分布式锁主从一致性问题

一、主从一致性问题的产生 Redis 主从集群使用如下: 在主节点进行数据的写操作;在节点进行数据的读操作;主节点向从节点同步数据。 主从一致性问题: 当主节点还没来得及将锁信息同步到从节点时,此时主节点宕机了。然…

【产品分析】高德手机地图产品:未来搜索将从地图开始

未来的搜索从地图开始。今后的所有商务活动都将通过地图展开,使之成为兵家必争之地。要将移动流量变现为真金白银,地图将发挥至关重要的作用。 目前整个中国电子地图市场目前处于应用成熟期。在多年的快速发展和数次大型收购后,各互联网巨头已…

[附源码]计算机毕业设计家庭教育appSpringboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

腾讯在线文档根据单选的内容修改背景颜色

目录 [介绍] [条件格式] [添加条件格式] [选择单元格范围] [条件选择] [格式预览] [管理条件格式] [介绍] 类似我这种场景(见下图),单选选择不同的状态,有时为了一目了然的看清状态,需要给单元格加上不同的背景颜色,但手动使用格式刷比较麻烦,琢磨了下根据单元格选项动态…

【云原生】Nacos 监控手册

Nacos 0.8.0版本完善了监控系统,支持通过暴露metrics数据接入第三方监控系统监控Nacos运行状态,目前支持prometheus、elastic search和influxdb,下面结合prometheus和grafana如何监控Nacos,官网grafana监控页面。 搭建Nacos集群暴…

HTML入门零基础教程(六)

嗨,大家好,我是异星球的小怪同志 一个想法有点乱七八糟的小怪 如果觉得对你有帮助,请支持一波。 希望未来可以一起学习交流。 目录 一、图像的路径 1.路径(前期铺垫知识) 2.VSCode打开目录文件夹: 3.路…

java计算机毕业设计ssm医院病床管理系统ft4fz(附源码、数据库)

java计算机毕业设计ssm医院病床管理系统ft4fz(附源码、数据库) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff0…

Kafka集群搭建

集群应用场景 (1)消息传递 Kafka可以很好地替代传统邮件代理。消息代理的使用有多种原因(将处理与数据生产者分离,缓冲未处理的消息等)。与大多数邮件系统相比,Kafka具有更好的吞吐量,内置的分…

Java项目:SSM会议室预约系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目包含管理员与用户两种角色; 管理员角色包含以下功能: 管理员登陆,会议室管理,预约审核管理,用户注册等功能。 用…

半路出家的菜鸡程序员,北漂五年,给刚入行朋友的一些忠告,发自肺腑

从高中(s1)到大学(s7)打了7年的LOL,电一大师、网一王者,一度准备打职业。多的不再赘述,要知道,那些除了纪念和情怀,对我都不再有意义。 难以启齿,LOL算是陪伴…

【OpenCV学习】第8课:形态学操作-开丶闭丶形态学梯度丶顶帽丶黑帽

仅自学做笔记用,后续有错误会更改 理论 开:先腐蚀 后膨胀(效果:可以去掉小对象)闭:先膨胀 后腐蚀(效果: 可以填洞,去污渍)形态学梯度(基本梯度)&#xff1a…

委托(delegate)

委托(delegate) 委托概述 将方法调用者和目标方法动态关联起来,委托是一个类,所以它和类是同级的,可以通过委托来掉用方法,不要误以为委托和方法同级的,方法只是类的成员。委托定义了方法的类…

Flutter - DecoratedBox(装饰容器)及内部控件使用详解

DecoratedBox. 可以在其子组件绘制前(或后)绘制一些装饰(Decoration),如背景、边框、渐变等 比如 这样 这样 这样 // DecoratedBox 的源码 const DecoratedBox({super.key,required this.decoration, // Decorationthis.position Decor…