unity学习笔记07

一、组件

有几个物体他们之间有着重复的功能,该如何避免重复的去写代码?

可以将一些相同的功能写成一个组件,也就是组件就等同于功能。

什么是组件?

在Unity中,游戏物体是不具备任何功能的,如果想要为其添加功能,那么就需要为它添加该功能的组件,而每一个组件其实就是一个引擎内部的组件脚本或是由自己编写的组件脚本。也就是说,一个游戏物体(Game Object )会包含多个组件(Component ),每一个组件又是一个组件脚本。
 

示例:创建一个空物体为其添加组件让其为立方体

创建一个空物体

添加组件mesh filter,然后网格选择立方体Cube

再添加一个Mesh   Renderer (渲染逐渐)

然后新建一个材质 ,最后将材质拖到添加组件的地方,然后就显示了一个立方体

组件的一些使用技巧

1.组件修改后想要恢复,可以点击重置就恢复了。

2.组件可以通过复制为物体增加新的组件。组件也可以粘贴组件值,可以将a物体的A组件修改一些数组后点击复制。再b物体上的A组件可以直接粘贴组件值,可以不用再增加一个组件吗,达到需要的效果。

二、脚本

1.方法的调用顺序。

Awake:最早调用,所以一般可以在此实现单例模式。也可以做一些初始化的设置,仅在对象第一次被激活时调用一次。。

OnEnable:组件激活后调用,在Awake后会调用一次。

Start:在Update之前调用一次,在OnEnable之后调用,可以在此设置一些初始值。

FbxedUpdate:固定频率调用方法,每次调用与上次调用的时间间隔相同。

Update:帧率调用方法,每帧调用一次,每次调用与上次调用的时间间隔不相同。

LateUpdate:在Update每调用完一次后,紧跟着调用一次。

OnDisable:与OnEnable相反,组件未激活时调用。

OnDestroy:被销毁后调用一次。

2.脚本的运行顺序

当有多个脚本同时存在时运行顺序是如何的呢?

默认情况下会会先执行所有脚本的  Awake 方法里面的,然后再执行所有脚本里面的 Start 方法里面的。

可以通过设置修改执行顺序,可以在Unity编辑器中的“Edit -> Project Settings -> Script Execution Order”中找到脚本执行顺序设置。

在这里将需要控制的脚本添加,然后修改这个数值

数值越小越靠前,执行顺序越靠前。比如图中的顺序会前执行test2的 Awake 然后再执行test1 的Awake 。

三、组件的标签和图层

1.标签:

标签是用于标识游戏对象的字符串。通过为游戏对象分配标签,可以轻松地将它们归类为特定的类型或功能。在Unity中,一些常见的默认标签包括"Player"、"Enemy"、"MainCamera"等。也可以自己创建一些没有的标签。

可以通过为物体分配标签,在查找物体是更为方便。

可以通过脚本设置标签和获取标签

// 设置游戏对象的标签
gameObject.tag = "Player";

// 获取游戏对象的标签
string objectTag = gameObject.tag;
 

2.图层

图层是用于分组和控制游戏对象渲染顺序和碰撞检测的一种方法。每个游戏对象都分配有一个图层,而图层定义了对象在场景中的位置和关系。

通过将游戏对象分配到不同的图层,可以控制它们在场景中的可见性和渲染顺序。例如,可以将一个2D的背景图层设置在角色图层之后,以确保角色显示在背景之前。

此外,图层还对碰撞检测非常重要。可以通过设置碰撞器和触发器的碰撞层次来控制它们之间的交互。例如,你可以设置角色碰撞器只与敌人层发生碰撞,而不与其他层发生碰撞。

同时图层也能添加,但是只能有32个。

也可以使用 Physics  类的 LayerMask  可以在脚本中选择性地检测或忽略特定图层的对象。 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2021年06月 Scratch图形化(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共10题,每题3分,共30分) 第1题 执行下列程序,输出的结果为? A:12 B:24 C:8 D:30 答案:B 第2题 执行下列程序,角色说出的内容是? A:2 B:3 C:4 D:5 答案:A 第3题 执行下列程序,输出结果为?

算法之插入排序及希尔排序(C语言版)

我们来实现上述排序 一.插入排序. 当插入第i(i>1)个元素时,前面的array[0],array[1],.,array[i-1]已经排好序,此时用array[i的排序码与array[i-1]array[i-2].的排序码顺序进行比较,找到插入位置即将arrayU插入,原来位置上的元…

深度学习之图像分类(十五)DINAT: Dilated Neighborhood Attention Transformer理论精简摘要(二)

Dilated Neighborhood Attention Transformer摘要 局部注意力机制:例如滑动窗口Neighborhood Attention(NA)或Swin Transformer的Shifted Window Self Attention。 优点:尽管在降低自注意力二次复杂性方面表现出色, …

位运算算法【1】

文章目录 🍊面试题 01.01. 判定字符是否唯一🥭题目🍑算法原理🥝解法一:哈希表🥝解法二:位图 🥑代码实现 🌽268. 丢失的数字🥬题目🍄算法原理&…

吃火锅(Python)

题目描述 吃火锅 以上图片来自微信朋友圈:这种天气你有什么破事打电话给我基本没用。但是如果你说“吃火锅”,那就厉害了,我们的故事就开始了。 本题要求你实现一个程序,自动检查你朋友给你发来的信息里有没有 chi1 huo3 guo1。…

Win7 SP1 x64 Google Chrome 字体模糊

1 打开 Google Chrome ,地址栏输入 chrome://version/ ,字体模糊。 2 Microsoft Update Catalog 搜索现在更新 kb2670838 ,安装,重启电脑。 3 打开 Google Chrome,地址栏输入 chrome://version/ ,字体正常。…

使字符串的单词倒序输出表示

题目 任务描述 本关任务:请实现函数 revWordoder,能够将 pa 指向的单词表字符串中的所有单词,按相反顺序放入 pb,同时去除多余的空格,单词之间只留一个空格. 例如 pa 中为 red blue, 则调用函数后,pb 中为b…

看懂YOLOv7混淆矩阵的含义,正确计算召回率、精确率、误检率、漏检率

文章目录 1、准确率、精确率、召回率、误报率、漏报率概念及公式1.1 准确率 Accuracy1.2 精确率 Precision1.3 召回率 Recall1.4 F1-Score1.5 误检率 false rate1.6 漏检率 miss rate 2、YOLOv7混淆矩阵分析 1、准确率、精确率、召回率、误报率、漏报率概念及公式 重点参考博文…

河北中洺科技-数据标注是怎样工作的?

由于人工智能系统的普及,各种智能场景在生活中变得普遍。然而,在这些极大方便我们生活的智能背后,数据标注似乎从未被人们所重视。数据标注是怎样的工作?为什么被称为人工智能训练师? 要想了解这些问题,我…

界面控件DevExpress WPF流程图组件,完美复制Visio UI!(二)

DevExpress WPF Diagram(流程图)控件帮助用户完美复制Microsoft Visio UI,并将信息丰富且组织良好的图表、流程图和组织图轻松合并到您的下一个WPF项目中。 在上文中(点击这里回顾>>),我们为大家介绍…

Linux常用命令——basename命令

在线Linux命令查询工具 basename 打印目录或者文件的基本名称 补充说明 basename命令用于打印目录或者文件的基本名称。basename和dirname命令通常用于shell脚本中的命令替换来指定和指定的输入文件名称有所差异的输出文件名称。 语法 basename(选项)(参数)选项 --help&…

有哪些不错的golang开源项目?

前言 下面是github上的golang项目,适合练手,可以自己选择一些项目去练习,整理不易,希望能多多点赞收藏一下!废话少说,我们直接进入正题>>> 先推荐几个教程性质的项目(用于新手学习、…