当前位置: 首页 > news >正文

【从零开始入门unity游戏开发之——unity篇09】unity6基础入门——Unity游戏对象和组件的本质、Unity中的反射机制

文章目录

  • 一、Unity游戏对象和组件的本质
    • 1、开发游戏的本质
    • 2、万物之根本——空对象
      • 2.1 什么是空对象?
      • 2.2 创建空对象
    • 3、Unity游戏对象的本质
    • 4、 transform组件
      • 4.1 transform组件的重要性
      • 4.2 修改transform的值
      • 4.4 **Transform的作用**
      • 4.3 重置transform的值
    • 5、总结
  • 二、反射机制和游戏场景
    • 1、知识回顾——C# 的反射
    • 2、Unity中的反射机制
      • 2.1 **什么是反射?**
      • 2.2 **为什么需要反射?**
    • 3、反射机制的应用
      • 3.1 **为GameObject添加脚本**
      • 3.2 **Inspector面板的操作**
      • 3.3 场景文件
  • 三、总结
    • 1、**Unity的工作机制**
    • 2、**Unity的本质**
  • 专栏推荐
  • 完结

一、Unity游戏对象和组件的本质

1、开发游戏的本质

开发游戏的本质其实可以理解为:我们开发者就像导演,Scence场景视图就像是舞台,里面有各种演员(对象),我们给每个演员分配剧本(脚本/组件),这些演员按导演给定的剧本在舞台上表演,最后通过相机拍摄下这部戏(游戏),给玩家观看(

2、万物之根本——空对象

2.1 什么是空对象?

空对象(Empty Object)是Unity中最基本的游戏对象,它不包含任何预设的组件,仅有一个 Transform 组件。你可以把它想象成一个没有特定功能的容器或节点。

GameObject 是Unity提供的一个基础类,所有的游戏对象都是基于它的。你可以把 GameObject 想象成一个没有剧本的演员,它可以是任何东西:图片、模型、音效、摄像机等等。它本身没有什么特别的功能,但可以通过挂载不同的组件(如脚本)来实现各种行为。

2.2 创建空对象

在层级窗口(Hierarchy)中右键点击,选择 Create Empty 可以创建一个空对象。
在这里插入图片描述

3、Unity游戏对象的本质

在层级窗口右键可以创建不同的对象,这些不同对象其实相当于是unity做好的一个个预设
在这里插入图片描述
其实本质就是一个空对象+对应的组件,然后就能让它扮演对应的角色

其实之所以场景上的这些对象能表现出不同的状态,其实就是因为它们身上挂载了不同的脚本(组件),这些脚本就决定了它们扮演的角色。

比如摄像机,并不是说摄像机对象与生俱来就是摄像机,而是因为他挂载了Camera组件而已。
在这里插入图片描述
比如,我们完全可以自己创建一个摄像机,不使用unity的预设

新建空物体,改名为新摄像机
在这里插入图片描述
添加Camera组件
在这里插入图片描述
这样我们就通过自己添加组件的方式,添加了一个摄像机。

其它对象同理,比如灯光,就是添加了Light组件,它才是灯光。

4、 transform组件

4.1 transform组件的重要性

每个游戏对象都必须有一个 Transform 组件,它记录了对象在世界中的位置(Position)、旋转(Rotation)和缩放(Scale)信息。

前面说了空对象是万物之根本。我们可以右键创建一个空对象看看。
在这里插入图片描述
可以看到一个对象一定要有一个位置信息,带入现实,如果一个东西没有位置,那么他就没有任何意义了,相当于根本就不存在,所以transform组件是不可或缺的。

4.2 修改transform的值

我们可以直接在面板上修改tranform的数据,来实现对象的移动、旋转和缩放。
在这里插入图片描述
其实前面在场景视图修改物体的移动、旋转和缩放的本质,其实就是间接的修改tranform面板上的数据。
在这里插入图片描述
注意:如果你在运行时修改了tranform数据,比如旋转、缩放等等,游戏一旦结束运行,数据并不会保留。一般我们如果运行时修改了数据,要在结束运行前点击复制数据内容,结束运行再粘贴上去。
在这里插入图片描述

4.4 Transform的作用

每个 GameObject 都有一个 Transform 组件,它就像是演员的剧本,告诉演员在哪里站、如何转、怎么缩放。Transform 记录了物体的位置、旋转和缩放信息,使得我们可以精确控制它们在3D空间中的表现。

4.3 重置transform的值

unity提供快速重置transform的值方案,点击右边上角三个点,点击重置即可
在这里插入图片描述

5、总结

  • 空对象 是构建复杂场景的基础,可以用作组织工具或功能载体。
  • 组件 决定了游戏对象的具体行为和外观,通过组合不同组件可以实现复杂功能。
  • Transform 组件是每个游戏对象不可或缺的一部分,它控制着对象的空间变换。

二、反射机制和游戏场景

1、知识回顾——C# 的反射

简单说一下,C# 反射 (Reflection) 是一种强大的机制,它允许程序在运行时动态地查看和操作程序的元数据。通过反射,我们可以在不事先知道类型信息的情况下,获取类型信息并操作类型中的成员(如类、方法、属性、字段等)。

对反射不了解的,可以回去看我C#篇有具体介绍反射:【从零开始入门unity游戏开发之——C#篇39】C#反射知识

2、Unity中的反射机制

2.1 什么是反射?

想象一下,你在玩一个角色扮演游戏(RPG),你可以随时查看自己的状态、装备、技能等信息。反射就像是在游戏中提供了一个“开发者模式”,让你可以在程序运行时查看和操作其他对象的信息,比如类、方法、字段等。

2.2 为什么需要反射?

在Unity中,反射帮助我们动态地创建和管理对象。比如,你可以通过脚本为游戏对象添加新的功能,而不需要每次都手动去编写代码。这就像给游戏中的角色穿上不同的装备或赋予他们新的技能一样灵活。

3、反射机制的应用

3.1 为GameObject添加脚本

当你在Unity编辑器中将一个C#脚本拖拽到某个 GameObject 上时,Unity实际上是在背后使用反射机制将这个脚本实例化并与 GameObject 关联起来。这就像是给演员分配了一部新的剧本,告诉他接下来要做什么。

3.2 Inspector面板的操作

当你在Inspector面板中修改 Transform 或者其他组件的属性时,Unity也在使用反射来获取和设置这些属性值。这就像导演在后台调整演员的动作和台词一样。

3.3 场景文件

前面说了,Unity中的游戏场景本质上是一个配置文件。它记录了场景中所有对象及其属性信息。当你加载一个场景时,Unity会读取这个文件,并通过反射机制创建相应的 GameObject 和关联的脚本。

三、总结

1、Unity的工作机制

Unity的工作原理就像是在一台虚拟的剧院里导演一场戏剧。GameObjectTransform 是必不可少的关键因素,相当于舞台上的演员和他们的剧本。通过反射机制,Unity能够动态地创建这些演员并赋予他们不同的剧本(C#脚本),使每个演员都能按照预定的逻辑行动,最终呈现出丰富多彩的游戏世界。

2、Unity的本质

Unity利用反射动态创建 GameObject 对象,并在其上关联各种C#脚本对象。这使得不同的 GameObject 对象可以各司其职,扮演好自己的角色。根据Unity提供的以及我们编写的剧本(C#脚本),一出精彩的游戏戏剧就此上演。


专栏推荐

地址
【从零开始入门unity游戏开发之——C#篇】
【从零开始入门unity游戏开发之——unity篇】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架开发】

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信或者加群找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~
在这里插入图片描述

相关文章:

【从零开始入门unity游戏开发之——unity篇09】unity6基础入门——Unity游戏对象和组件的本质、Unity中的反射机制

文章目录 一、Unity游戏对象和组件的本质1、开发游戏的本质2、万物之根本——空对象2.1 什么是空对象?2.2 创建空对象 3、Unity游戏对象的本质4、 transform组件4.1 transform组件的重要性4.2 修改transform的值4.4 **Transform的作用**4.3 重置transform的值 5、总…...

【Linux】深入理解文件系统(超详细)

目录 一.磁盘 1-1 磁盘、服务器、机柜、机房 📌补充: 📌通常网络中用高低电平,磁盘中用磁化方向来表示。以下是具体说明: 📌如果有一块磁盘要进行销毁该怎么办? 1-2 磁盘存储结构 ​编辑…...

MoEs and Transformers 笔记

ref:https://huggingface.co/blog/zh/moe#%E7%94%A8router-z-loss%E7%A8%B3%E5%AE%9A%E6%A8%A1%E5%9E%8B%E8%AE%AD%E7%BB%83 MoEs and Transformers Transformer 类模型明确表明,增加参数数量可以提高性能,因此谷歌使用 GShard 尝试将 Transformer 模型…...

在Linux中,如何禁用root用户直接SSH登录?

在Linux中禁用root用户的直接SSH登录是为了增强系统的安全性,因为允许root用户通过SSH远程登录会增加服务器被暴力破解的风险。以下是在Linux系统中禁止root用户直接SSH登录的步骤: 编辑SSH配置文件: 打开/etc/ssh/sshd_config文件&#xff…...

用Python实现简单的任务自动化

目录 1. 自动发送邮件提醒 2. 自动备份文件 3. 自动下载网页内容 总结 在现代工作和生活中,任务自动化可以极大地提高效率和准确性。Python,作为一种功能强大且易于学习的编程语言,是实现任务自动化的理想选择。本文将通过几个简单而实用的案例,展示如何用Python实现任…...

为AI聊天工具添加一个知识系统 之26 资源存储库和资源管理器

本文要点 资源存储库 为了能完成本项目(“为AI聊天工具增加一个知识系统”,其核心能力是“语言处理” ,该能力的最大挑战 当仁不让的应该是自然语言处理)的设计,我们考虑一个问题:在自然语言处理中&#…...

Windows10环境下安装RabbitMq折腾记

最近有个老项目需要迁移到windows10环境,用的是比较老的rabbitmq安装包,如下所示。经过一番折腾,死活服务起不来,最终果断放弃老版本启用新版本。现在把折腾过程记录下: 一、安装erlang 安装完成后的目录结构&#xff…...

对快速由表及里说拜拜/如何正确运用由表及里

你是不是还:看到一男子拖走一女子就以为小情侣吵架而已(可能人贩子);看到男友对你好个几次就从此死心塌地(可能有手就行,细节装装而已)结果耽误终身;看到女同事对你微笑不排斥就以为…...

spring mvc源码学习笔记之八

本文说点儿简单的。 如果你想研究基于 XML 配置的 spring mvc 的话,可以简单扫一眼本文。 在基于 XML 配置的 spring mvc 开发中,我们主要就是通过 spring 提供的各种标签来配置。 但是,大家是不是都有个疑问,spring 到底给我们提…...

探秘5网口IIOT网关

在当今这个科技飞速发展的时代,工业领域正经历着一场深刻的变革,而工业物联网网关在其中扮演着至关重要的角色。 什么是IIOT网关 工业物联网网关,简单来说,就是连接工业现场设备与云端或者上层管理系统的关键桥梁。 而明达技术研…...

左神算法基础巩固--5

文章目录 前缀树生成前缀树查询前缀树查询字符串加入过几次查询所有加入的字符串中,有几个是以pre这个字符串作为前缀 删除前缀树中的某个字符串 贪心算法解题 前缀树 生成前缀树 要想生成一棵前缀树,需要先创建一个根节点,这个根节点有26条…...

Python的Matplotlib库应用(超详细教程)

目录 一、环境搭建 1.1 配置matplotlib库 1.2 配置seaborn库 1.3 配置Skimage库 二、二维图像 2.1 曲线(直线)可视化 2.2 曲线(虚线)可视化 2.3 直方图 2.4 阶梯图 三、三维图像 3.1 3D曲面图 3.2 3D散点图 3.3 3D散…...

负载均衡服务器要怎么配置?

目录 一、概述: 二、硬件配置: 三、操作系统配置: 四、负载均衡软件: 五、网络配置: 六、软件安装步骤: 6.1 安装 Nginx 6.2 安装 LVS 6.3 安装 HAProxy 6.4 安装 Keepalived 一、概述&#xff1…...

CANopen转EtherCAT网关连接伺服驱动

在现代工业自动化领域,CANopen和EtherCAT是两种常见的通信协议,各自在不同的应用场景中发挥着重要作用。然而,随着工业自动化系统的日益复杂化,不同设备间的通信需求也变得多样化。因此,如何实现不同协议设备之间的无缝…...

自动化测试脚本实践:基于 Bash 的模块化测试框架

前言 在现代软件开发中,测试自动化是确保软件质量和稳定性的核心手段之一。随着开发周期的缩短和功能模块的增多,手动测试逐渐无法满足高效性和准确性的需求。因此,测试人员需要依赖自动化工具来提升测试效率,减少人为干预和错误。…...

WebSocket 测试入门篇

Websocket 是一种用于 H5 浏览器的实时通讯协议,可以做到数据的实时推送,可适用于广泛的工作环境,例如客服系统、物联网数据传输系统, 基础介绍 我们平常接触最多的是 http 协议的接口,http 协议是请求与响应的模式&…...

Apache Traffic存在SQL注入漏洞(CVE-2024-45387)

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...

Centos7使用yum工具出现 Could not resolve host: mirrorlist.centos.org

在 CentOS 7 中使用 yum 工具时,出现 "Could not resolve host: mirrorlist.centos.org" 的错误,一般情况是因为默认的镜像源无法访问。 以下是一些常用的解决方法: 检查网络连接:首先使用 ping 命令测试网络连接是否…...

zookeeper shell操作和zookeeper 典型应用(配置中心、集群选举服务、分布式锁)

文章目录 引言I zookeeper客户端命令查看子节点 ls创建子节点 create获取节点信息 get更新节点数据 set删除节点 delete\ rmrII 监听机制node1:设置监听node3:修改监听节点node1:得到监听反馈III zookeeper 典型应用分布式锁集群选举服务数据发布/订阅(配置中心)引言 zk 的…...

Vue中Watch使用监听修改变动

使用注意 监听一个值时 多个值时...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

微信小程序云开发平台MySQL的连接方式

注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息&#xff0…...