【Unity开发】GameObject

unity对象池 开发过程中会经常遇到频繁大量的生成某种物体(如常见的怪物或者子弹之类的)这种情况下为了节省资源占用建议使用对象池。 原理是:通过循环使用对象, 减少资源在初始化和释放时的性能损耗。 思路是:在需要时,从池中提取,不用时,放回池中。 //一版 using System.Collections; using System.Collections.Generic; using UnityEngine; /**对象池*/ public class TerrainPool { .. 阅读详情

【Unity开发】GameObject

写在前面——

    如果转载请注明出处,谢谢大家支持

                                                        ——Forward

                                                                  我的微博——秦京一梦 

QQ技术交流群——forTheDream(225117179)

 

GameObject是Unity中一个很重要的角色。对GameObject学习能够让我们更好的进行Unity开发,今天我们就来学习一下GameObject这个概念——

 

在我们的Unity游戏中每一个对象都是一个GameObject,但是没有我们的指示,这些GameObject对象不会自己做任何事情。GameObject就像一个可以由我们自己定义的容器,我们让它包含什么样的属性,它就是一种什么样的GameObject——一个角色或者一个特效等等。

    好的,这里就有一个问题了,既然游戏中的每个对象都是一个GameObject,我们又是如何来区分它们呢?

    前面我们已经说过,GameObject就是一个容器。在这个空箱子中放不同的东西(属性),就组成了不同的对象类型。也就是说,游戏中需要什么的元素,我们都可以通过向GameObject中添加组件(Component)的方式来实现,当然,我们还可以通过脚本(Script)来创建自定义的组件。

 

GameObject和组件(Componet)的关系

前面说了,一个GameObject,我们可以根据需要给他添加各种不同的Componet来实现我们预期的效果。当我们创建一个新的GameObject的时候都会自带一个Transform(这个Componet包含了位置,旋转,缩放属性),我们可以修改这些属性。

Transform Component

Transform Component是最重要的一个Component,因为所有的GameObject的使用要涉及到Transform的属性(每个游戏对象在游戏世界中的表现,都要设置其位置,旋转,缩放的)。

【Unity开发】GameObject

 

图 1

这里需要说明一下,在Unity游戏场景中,我们不可能创建一个不包含任何Transform的空GameObject。如果一个GameObject而不包含任何Transform Component,那么这个GameObject只能用来存储数据,而不能在游戏场景中显示。

 

其他组件

Transform Component对GameObject来说是相当重要的一个组件,但是对一个GameObject来说,他除了需要一个Transform组件之外,一般来说,我们还会给他挂上其他的一些组件(比如:button的点击响应、动画效果甚至是我们自己定义的一些组件)

 

组件的使用

通过上面的学习,我们已经知道了GameObject和Component的一些概念和它们之间的关系。了解只是起步,真正应该怎么去使用它们呢?接下来,我们就来学习一下他们的使用过程。

 

添加组件

在Unity的菜单栏,我们看到有一项Component,我们可以通过这一菜单项来添加Component给某一个GameObject。

【Unity开发】GameObject

 

图 2

       在这个菜单项的下拉列表中我们也可以看到具体的Component有哪些。

                                     【Unity开发】GameObject

 

图 3

接着Unity的第一篇博客中的例子,我们向之前创建的GameObject中添加一个Rigidbody的Component(一个物理组件Component——Physics——Rigidbody),运行这个例子,看看与添加Rigidbody之前的例子有什么区别呢?(对,当我们运行起来时,发现场景中的GameObject受到重力影响,出现了由慢向快开始下落的效果,OK,添加组件成功!)

 

编辑组件

       我们可以在Inspector中看到GameObject多了一个Rigidbody的属性信息,在这里,我们可以根据自己的需要去修改新添加Component的属性。

【Unity开发】GameObject

 

图 4

       当然不同的Component有不同的属性供我们操作,这个我们可以自己去看看。

 

移除组件

       在开发过程中,当我们需要移除一个Component时,该怎么做呢?其实很简单,鼠标右键点击Component组件

【Unity开发】GameObject

 

图 5

GameObject和Script的关系

       这里肯定有人会问——如果现有的这个Component不能满足项目需求或者说我如何才能主动控制场景中的GameObject呢?根据Forward对Unity的现有理解,我们可以通过添加Script来达到这个目的。

              【Unity开发】GameObject

 

图 6

先我们需要创建一个自己的Script,如图6所示,(Assets——Create——JavaScript/C#Script/…)创建我们的目标Script,我们所预期的场景中的GameObject所要做的逻辑都是在这个Script中完成的,这么说,可能有人就糊涂了,新创建的Script是如何跟场景中的GameObject关联起来呢?这就涉及到Unity的操作(或许就是Unity被广泛开发人员肯定的一个重要原因吧,场景中的对象与脚本的关联,不需要过多的添加代码,而只需要使用鼠标拖拽就可以完成!)

这里,我们将新添加的Script——CubeTest用鼠标左键选中(不松开)直接拖拽至Hierarchy窗口中的Cube_Test(目标GameObject)上,然后松开鼠标就可以了,这样我们就对目标GameObject关联到了一个Script上(是不是那句广告语——“So easy”啊?^_^)

                【Unity开发】GameObject

 

图 7

在目标GameObject的Inspector窗口中查看添加结果,如图8所示——

                           【Unity开发】GameObject

 

图 8

这样,我们就可以在新添加的CubeTest Script中控制目标GameObject了。这里我们为了做测试,在CubeTest文件中添加如下代码——

        【Unity开发】GameObject

 

图 9

好了,运行起来之后,如我们所预期的,在Console窗口中,我们看到打印了预期log,证明关联是成功的!

         【Unity开发】GameObject

 

图 10

好了,GameObjec的学习到这里就结束了,明天还得上班,得休息啦~~~

Unity开发核心:GameObject与Component组件化架构详解 在游戏开发与实时交互应用构建中,组件化架构是一种核心设计模式,它通过将功能拆分为独立、可复用的单元来提升代码的模块化与灵活性。其原理在于将实体(如游戏对象)视为容器,通过组合不同的功能组件来定义其行为与属性,实现了关注点分离。这种模式的技术价值在于大幅提升了开发效率、系统可维护性及团队协作能力,使得复杂功能的迭代与调试更为便捷。在应用场景上,它广泛服务于游戏角色控制、UI系统构建、物理模拟以及AR/VR交互逻辑等。本文聚焦于Unity引擎中的具体实现,深入剖析其**GameObject(物体)** 与 ** 阅读详情

相关推荐

Unity多人游戏开发入门:Netcode for GameObject基础同步实战

在Unity多人游戏开发中,网络同步是核心挑战之一,它涉及游戏状态在不同客户端间的实时一致性问题。其基本原理是通过客户端-服务器架构,由服务器作为权威状态源,客户端发送输入并接收状态更新,确保所有玩家体验一致。这项技术的价值在于能构建具备实时互动能力的多人在线游戏,广泛应用于竞技对战、合作闯关、大型多人在线等场景。本文聚焦Unity官方解决方案Netcode for GameObject,通过实战演示如何利用NetworkManager、NetworkObject等核心组件快速搭建一个可运行的多人同步场景,

weixin_33226816的博客 362

【Unity】一个用于注解的脚本,可作为组件添加于GameObject

【代码】【Unity】一个用于注解的脚本,可作为组件添加于GameObject。

Lwyy_的博客 576

Unity游戏开发:GameObject命名规范与组织管理实战技巧

在Unity游戏开发中,GameObject管理是项目架构的基础环节,直接影响开发效率和代码可维护性。其核心原理在于通过规范的命名体系与逻辑分组,构建清晰的对象层级结构,从而提升场景的可读性与团队协作效率。从技术价值看,良好的GameObject管理能显著降低查找与引用成本,避免因对象混乱导致的性能隐患与调试困难。在应用场景上,无论是小型原型还是中大型项目,都需要建立统一的前缀命名规范(如Env_、Prop_、UI_前缀)和逻辑容器分组。本文聚焦Unity新手常见的场景对象管理难题,系统讲解如何通过预制体(

weixin_33978722的博客 328

Unity API详解——GameObject类

GameObject类是Unity场景中所有实体的基类。一个GameObject对象通常由多个组件(component)组成,且至少含有一个Transform组件。介绍GameObject类的一些实例属性、构造方法、实例方法和静态方法,并在最后对GameObject和Component这两个类之间的关系及其设计的GetComponent相关方法的使用区别进行注解。......

极客园地 2545

Unity开发必备:LINQ to GameObject高效场景对象查询与性能优化实战

在Unity游戏开发中,高效管理和查询场景对象是提升开发效率和性能的关键。通过将场景层级结构视为数据集合,开发者可以运用声明式查询原理,简化复杂对象筛选逻辑。这一技术价值在于大幅提升代码可读性与维护性,尤其适用于UI管理、动态对象筛选和编辑器工具开发等应用场景。本文结合Unity性能优化和C# LINQ技术,深入解析如何利用LINQ to GameObject实现高效组件筛选与层级遍历,帮助开发者避免常见陷阱,自然收敛到提升项目代码质量与开发体验的核心主题。

weixin_30279315的博客 337

Unity引擎开发:Unity基础入门_GameObject对象和Transform组件

通过本节的学习,你已经掌握了GameObject对象和Transform组件的基本原理和使用方法。GameObject作为游戏中的基本单元,承载了各种组件,而Transform组件则是控制对象位置、旋转和缩放的核心工具。希望这些示例能够帮助你更好地理解和应用这两个概念。接下来,我们将继续深入学习Unity的其他核心组件和功能。

chenlz2007的博客 1160

unity 两个forward的区别

go.transform.position += (transform.forward / 1000); 其实这个transform.forward 就是点击物体后 出现的三个箭头 如果你debug 这个数值 会发现 他是gameobject旋转后的一个z方向 比如,(0.5, -0.5, 0.7) 下面这个就好理解了,他会向着z方向前进 是世界坐标 go.transform.position += (Vector3.forward / 1000); position是世界坐标中的位置,可以理解为绝对坐标

游戏人生 2615

C#中使用OpenCV的常用函数

c# opencv 常见操作

大黄鸭在发光的专栏 1079

探秘Unity开发利器:LINQ to GameObject

在Unity引擎的开发中,你是否曾经为遍历游戏对象层级结构以及高效操作这些对象而感到困扰?现在,有一款名为"LINQ to GameObject"的开源工具可以帮助你解决这个问题。这款工具巧妙地将Linq查询语法引入到Unity的GameObject处理中,提供了一种强大且性能优化的方法来管理你的游戏对象层次。 你可以通过[Unity Asset Store](http://u3d.as/con...

gitblog_00071的博客 436

单细胞实战之数据净化三部曲:细胞周期校正、双胞体剔除与RNA污染清理——技术解析与实战指南

本文深入解析单细胞数据分析中至关重要的数据净化步骤,即细胞周期校正、双胞体剔除与RNA污染清理。通过实战代码演示与原理剖析,指导读者如何有效识别并去除技术噪音,从而获得更纯净、可靠的数据,为后续的细胞分群、差异表达等高级分析奠定坚实基础。

weixin_29274337的博客 204

【GEE实战】Sen+MK趋势分析:从代码到地图,解锁植被变化时空密码

本文详细介绍了在Google Earth Engine(GEE)平台上使用Sen斜率估计和Mann-Kendall(MK)检验进行植被变化趋势分析的全流程。从遥感数据加载、Sen斜率计算到MK显著性检验,结合代码示例和实战经验,帮助读者掌握植被时空变化分析的实用技巧,为生态监测和环境保护提供数据支持。

weixin_42628688的博客 213

Unity开发——GameObject计时器

Unity:2021.1.14flc1 在UnityAR开发的过程中,需要给每一个我生成的物件加一个单独的计时器来控制不同的GameObject,我写了两个类,TimeCount(计时器)和TimeObject(带计时器的GameObject) TimeCount public class TimeCount { private float timer = 0f; public float Timer { get { return timer; } set { timer = value;

jhin_lx的博客 234

Vivado加上VsCode让你的生活更美好

VsCode与Vivado的灵活使用 引言 ​ 现在大二了,在接触硬件描述语言。Vivado自带的编辑器实在很难用,为了能够“极客”一些,当然是去Google了一下有哪些方法可以取而代之。 ​ 网络上的答案大同小异,基本上都是用的Sublime Text.(我的学长们也几乎都是) 平时码代码的过程中,我习惯与使用VsCode,尤其是在微软收购GitHub之后,Code 简直就是神器了。于是乎…一个...

qq_39498701的博客 10万+

Unity开发:比较两个GameObject是否相等

直接比较gameObject总是不相等..这样我在游戏中存储在List中的物体就没有办法进行判断删除,经过查询好像确实gameObject没有办法比较…经过测试后可以比较transform,如果transform是相等的,那么可以认为对应的物体是同一个物体,另外可以要及时利用脚本的话,可以直接判断脚本是否相等,用脚本也可以及时得到gameObject。...

sailist的记录站 6832

9、硬件工程师笔试面试知识器件篇——三极管(2025版本)

本文全面介绍了三极管的基础知识与应用,包括其结构、类型、工作原理、工作状态、功能、应用场景及特性参数。详细探讨了三极管在信号放大、无线通信、音频设备及医疗设备中的具体应用,并深入分析了设计放大电路时如何平衡增益与噪声、优化偏置电路以提高稳定性、使用负反馈改善性能等关键问题。此外,文章还涵盖了高频电路设计、温度补偿策略、电磁干扰防护等实用内容,为硬件工程师提供了全面的技术参考和设计指导。

XU157303764的博客 7312

fatal: unable to access ‘https://github.com/‘: Recv failure: Connection was reset 解决方案

本文主要介绍了fatal: unable to access ‘https://github.com/’: Recv failure: Connection was reset 解决方案,希望能对使用github的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 2万+

Unity开发中利用LINQ实现高效GameObject查询与遍历优化

在Unity游戏开发中,对象查询与遍历是基础且高频的操作,传统方法如GameObject.Find和手动循环常导致代码冗长和性能问题。其原理在于将场景层级结构视为可查询的数据集合,通过声明式编程替代过程式逻辑。这一技术价值在于大幅提升代码可读性、开发效率和可维护性,同时借助延迟执行等特性优化性能。应用场景广泛覆盖UI管理、动态对象筛选、游戏状态控制等。本文聚焦LINQ to GameObject范式,通过扩展方法封装,结合热词如性能优化和GC(垃圾回收)管理,为开发者提供一套清晰、高性能的层级遍历解决方案。

ctpaknc9526的博客 364

股票价格预测的秘密武器:用C#实现蒙特卡洛路径模拟,轻松掌握市场波动规律!

摘要: 蒙特卡洛模拟是股票预测的有效工具,通过随机抽样模拟价格路径,克服传统技术分析的局限性。其核心模型是几何布朗运动(GBM),描述股价随机变化过程。C#实现的关键步骤包括:1)获取输入参数;2)生成随机数路径;3)分析结果。该方法不预测具体价格,而是提供可能的价格范围,帮助投资者评估风险。代码结构清晰,分为输入、模拟、分析和可视化四个模块,通过参数封装提高可读性,适用于不确定市场的概率预测。

墨夶的博客 601

蓝鸥Unity开发教程之课时8 GameObject

蓝鸥Unity开发教程之课时8 GameObject

蓝鸥_嘟嘟的小屋的博客 371

麒麟操作系统安装教程(保姆级)

本文介绍了如何在VM中安装麒麟操作系统,文章详细的介绍了麒麟操作系统按钻过步骤。

啊渊的专栏 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Unity开发入门:GameObject与Transform核心概念详解

在Unity引擎中,GameObject和Transform是构建3D场景的基石。GameObject作为场景中的基本容器,本身不具备具体功能,但可以通过附加各种组件(Component)来获得不同的能力和外观,如渲染、物理等。Transform组件则定义了GameObject在三维空间中的几何状态,包括位置、旋转和缩放,是对象在虚拟世界中存在的坐标依据。理解这对核心概念,对于掌握Unity的场景组织、对象管理和脚本交互至关重要。在实际开发中,合理运用GameObject的父子层级关系,可以高效管理复杂场景

weixin_33938733的博客 429

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Unity脚本开发篇(03)常用API(Component类、Transform类、GameObject类、Object类、Time类)

本文总结了Unity中Component、Transform和GameObject三大类的常用操作方法。Component类包含GetComponent()系列方法,用于获取单个/多个组件或子/父对象组件;Transform类提供位置/缩放设置、移动旋转和父子关系操作;GameObject类涵盖激活状态控制、组件添加/获取以及对象查找功能。此外还介绍了Object类的对象查找和销毁方法。这些API是Unity开发的基础工具,合理使用能有效提升开发效率。

m0_55575697的博客 1446

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Unity 开发一个简单的GameObject对象缓存池

一个简单的GameObject对象缓存池 在游戏开发过程中动态生成对象时,如果每次刷新都需要删除当前所有对象,再生成一次的话,效率太低了,所以打算开发一个简单的对象缓存池类。 代码链接:GameObjectBuffer.cs 提取码:l270 如何使用 public GameObjectBuffer objectBuffer = new GameObjectBuffer(); public void InitList() { GameObject item;

qq_24628687的博客 434

Unity 使用Netcode for GameObject进行多人游戏开发遇到的内存泄漏问题

创建问题在编辑器模式引发的"A Native Collection has not been disposed, resulting in a memory leak. Enable Full StackTraces to get more details."问题。如果一开始在声明两个NetworkList变量的时候,不初始化的话就不会报错。所以现在急需大佬解疑答惑,导致内存泄漏的原因。

cjc1888的博客 209
上一篇: unity3D游戏开发三之unity编辑器二
下一篇: Unity引擎初探
linuxheik
博客等级 码龄15年 865粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值