【Unity3D基础教程】(一):GameObject,Compoent,Time,Input,P...

「Unity」时间记录小工具 A simple way to record time in Unity 阅读详情


重要模块的类图


是一个Component-Based的游戏引擎,并且为GamePlay Progrmmer提供了很多游戏性层上的支持。比如可以在图形界面上设计动画状态转换的Animator。比如可以直接在场景编辑器中方便进行调整的Collider。比如可以动态调整动画曲线的Animation。总的来说,是一个架构比Cocos2d-x精巧许多的游戏引擎。

但是很遗憾的是,本身并不开源,还好,在不开源的情况下却做了比较详尽的文档支持。同时,的社区也是很友好的,stackoverflow也有许多值得一看的问题。

我在学的知识的时候,发现内部涉及的重要类比Cocos2d-x要多,有点理不清的感觉,所以制作了下面的设计类图来为像我一样的初学者提供一个的初步印象。




GameObject和Component
由于是一个Component-Based的游戏引擎,所以游戏中所有的物体都是一个GameObject,为了给这个GameObject附加上各种各样的属性,所以我们引入了Component这个概念。

GameObject是由Component组合成的,Component的生命周期和GameObject息息相关。一旦GameObject的Destroy方法,它的子对象和对应的所有Component都会被销毁,同时,我们也可以一次只销毁一个单独的Component。

Component有如下这些种类,我制作了一张表格来记录它们的用途:



组件附属于游戏物体.把一个 Renderer(渲染器)组件附到游戏对象,可以使游戏对象显示到场景,附一个 Camera(摄像机)可以把物体变成一个摄像机物体.所有脚本都是组件,因此都能附到游戏对象上.

常用的组件可以通过简单的成员变量取得:

附在游戏对象上的组件或脚本可以通过GetComponent获取.如下代码示例:
using UnityEngine;
using System.Collections;
public  class example : MonoBehaviour {   
    void Awake() {        
        transform.Translate( 0,  1,  0);        
        GetComponent[tr]().Translate( 0,  1,  0);   
    }
}


Input和InputManager
支持,键盘,操纵杆和游戏手柄输入。

在输入管理器(Input Manager)可以创建虚拟轴和按钮,并终端用户可以在屏幕配置对话框配置键盘输入。

如果想添加新的虚拟轴,选择菜单Edit->;Project Settings->Input menu。这里可以改变每个轴的设置。即可进入Input Manager的配置界面。


从脚本,所有虚拟轴通过它们的名字(name)来访问。

当创建时,每个项目都具有下面的默认输入轴:

  • Horizontal and Vertical are mapped to w, a, s, d and the arrow keys. 
    水平和垂直被映射到w, a, s, d键和方向键
  • Fire1, Fire2, Fire3 are mapped to Control, Option (Alt), and Command, respectively. 
    Fire1, Fire2, Fire3被分别映射到Ctrl,Option(Alt)和Command键
  • Mouse X and Mouse Y are mapped to the delta of mouse movement. 
    Mouse X 和 Mouse Y被映射到鼠标移动增量
  • Window Shake X and Window Shake Y is mapped to the movement of the window. 
    Window Shake X 和 Window Shake Y 被映射到窗口的移动

Time

Time类是Unity中的一个全局变量,它记载了和游戏相关的时间,帧数等数据。

Time类包含一个非常重要的变量叫deltaTime.这个变量包含从上次调用Update 或FixedUpdate到现在的时间(根据你是放在Update函数还是FixedUpdate函数中).(另注: Update每帧调用一次)

依照上面的例子,使得物体在一个匀速的速度下旋转,不依赖帧的速率,如下:

using UnityEngine;
using System.Collections;
public  class example : MonoBehaviour {   
    void Update() {        
        transform.Rotate( 0,  5 * Time.deltaTime,  0);   
    }
}

当然了,在使用Time这个类的时候,我们也要记住使用各种各样的Lerp函数来减少自己的工作量,在Unity3D中,Vector3,Vector2,Color等类都提供了相应的Lerp函数给我们调用。 Physics和Transform

Physics类是Unity重的一个工具函数类,它主要提供了Linecast和Raycast两种射线投射方式。

其中Linecast是以投射的起始位置和终止位置为参数,来判断这个投射有没有和某个Collider发生了碰撞。

而Raycast则是以投射的起始位置和投射方向为参数,来判断这个投射有没有和某个Collider发生了碰撞。
相应的实例可以看下面的这一段程序:

using UnityEngine;
using System.Collections;
public  class Example : MonoBehaviour {   
    void Update() {   
        //  使用Raycast        
        Vector3 fwd = transform.TransformDirection(Vector3.forward);        
        if (Physics.Raycast(transform.position, fwd,  10))            
            print( " There is something in front of the object! ");        
        //  使用Linecast    Transform target;   
        if (!Physics.Linecast(transform.position, target.position))        
            ProcessData.AndDoSomeCalculations();   
    }
}

在Physics这个模块中,有三个Component是至关重要的,分别是RigidBody,Collision,Joint。在新的版本中,又引入了RigidBody2D,Collision2D,Joint2D这些Component来处理2D中的Physics事件。

这三个类都是处理物理相关的事件的,那么它们有什么区别呢?

RgidBody是作为一个受力物体而存在的,所以可以向一个RigidBody施加Force(力),Drag(阻力)。同时RigidBody还有 velocity (速度),mass(质量),position(位置),旋转(rotation)等等。

Collider是为了处理物理中的碰撞事件而出现的类,就像上面表格中所说的,如果没有Collider,两个RigidBody之间是无法发生碰撞的。对同一个GameObject可以绑定多个Collider构建更加复杂的碰撞体结构。Collider另外一个很值得注意的就是我们可以为Collider设置material,即Collider的物理材质。 物理材质用于调整摩擦力和碰撞单位之间的反弹效果。

当发生碰撞时,会触发毁掉函数OnCollisionEnter,OnCollisionStay,OnCollisionExit等等。这几个函数与OnTriggerXXX的区别会在接下来的博客中提到。

Joint用于连接两个RigidBody,当Joint断掉的时候会触发OnJointBreak的回调函数。



fibplus-8.0.0.zip FIBPlus 是一套面向 Delphi / C++Builder 的 Firebird、InterBase 数据库访问组件,特点是直接走原生客户端 API,不经 BDE/ODBC,速度快且可控性强。8.0.0 版本主要适配 Delphi 2009 及以后的版本(Delphi 6–2007 需用 7.9.x),核心组件包括 TpFIBDatabase、TpFIBTransaction、TpFIBDataSet 等,支持精细事务管理、本地缓存、BLOB 处理和备份恢复等数据库服务。该库原为 Devrace 的商业组件,现由社区在 GitHub 的 madorin/fibplus 项目开源维护,建议从官方仓库获取源码而非第三方网盘压缩包。安装时解压后用对应版本的工程组(10.4+ 统一为 `FIB.groupproj`)Build 全部包,再 Install `dclFIB` 并在 Library 路径加入 Source 目录即可。新项目中若需官方技术支持,也可考虑 FireDAC、IBDAC 等更现代的替代方案。 立即下载

相关推荐

基于K8S + apisix/istio 实现云原生模块化微服务.自带代码生成器,能够生成对表的增删改查的逻辑代码

基于K8S + apisix/istio 实现云原生模块化微服务.自带代码生成器,能够生成对表的增删改查的逻辑代码.是标准Maven项目,只依赖springboot,没有hibernate,struts,ibatis,数据库调优可以使用druid输出慢sql,比分析xml中的语句更直观,springrain所有的sql语句都使用Finder封装管理,只要查看Finder的引用即可.

Unity GameObject抖动效果

Unity GameObject抖动效果说明代码 说明 给物体挂上脚本,调用Shake时进行一次抖动 shakeRate:抖动幅度 shakeTime:抖动总时长 shakeDertaTime:抖动间隔 代码 using UnityEngine; using System.Collections; using System.Collections.Generic; public class ...

c88771013的博客 3573

工艺部2026年终总结及2027工作规划PPT.pptx

制造业生产、工艺、设备、质量全套 PPT 资料,包含月度经营复盘、季度数据分析、部门年终总结规划、产线与检验规范、TPM 设备保全、质量意识、质量总监高阶培训等课件。内容兼顾经营指标偏差分析、述职汇报、现场制度宣贯、岗位技能教学。 适合操作工、检验员、设备维保员、工艺 / 品质 / 设备工程师、生产主管、各部门部长、质量总监、厂长、内部培训师、精益专员使用,覆盖一线执行、骨干分析、部门负责人述职、高管进阶全层级,可直接用于工厂汇报、内部培训、述职复盘。

Unity3d 实现简单的剧情系统

剧情中需要做什么? 1).创建物体 2).基础位移,旋转 3).UI控制 4).语音控制 等等… 命令类: /// /// 剧情命令基类 /// public abstract class PlotCommand { /// /// 剧情数据 /// protected PlotInfo PlotI

刘丿建宁 7183

wordbuddy破甲经验分享

wordbuddy破甲经验分享

双闭环PWM整流器VOC控制 +SVPWM调制仿真(Simulink仿真实现)

内容概要:本文详细介绍了一种基于Simulink的双闭环PWM整流器采用虚拟同步发电机控制(VOC)策略与空间矢量脉宽调制(SVPWM)技术的仿真模型。该模型在dq同步旋转坐标系下构建电压定向控制系统,实现了电压外环与电流内环的双闭环控制结构,重点阐述了VOC控制原理、SVPWM调制算法的实现方法及其在Simulink环境中的模块化搭建过程。通过该仿真平台,能够有效实现单位功率因数运行、直流母线电压稳定控制以及优异的动态响应性能,适用于电力电子变换器、新能源并网系统及电机驱动等领域的控制策略验证与性能评估。; 适合人群:电气工程、自动化、电力电子与电力传动等相关专业的高年级本科生、研究生,以及从事电力电子系统仿真、新能源并网控制研究的科研人员和技术工程师。; 使用场景及目标:①深入理解三相PWM整流器在dq坐标系下的数学建模与控制机理;②掌握VOC控制策略的核心思想及其相较于传统矢量控制的优势;③学习SVPWM调制技术的实现流程与Simulink建模技巧;④通过仿真实验验证双闭环控制系统的静态精度与动态稳定性,提升对先进电力电子控制系统的分析与设计能力。; 阅读建议:建议结合电力电子技术、现代控制理论和电机控制相关基础知识进行学习,按照仿真模型的结构逐步分析各功能模块的信号流向与参数配置,重点关注锁相环(PLL)、坐标变换、PI控制器设计及SVPWM模块的实现细节,并可通过调整控制参数观察系统响应变化,以深化对控制策略动态特性的理解。

Unity基础系列(一)——创建一个时钟(GameObjects与Scripts)

点击蓝字关注我们吧!目录1 创建一个时钟1.1 创建一个Game Object1.2 创建钟盘1.3 创建时钟的其他部分1.4 创建指针2 让时钟动起来2 定义组件类型2.1 定义组件...

公众号:壹种念头,知乎:放牛的星星 2659

储能双向Buck-Boost+模型预测电流控制+电压下垂控制仿真【附参考文献】(Simulink仿真实现)

内容概要:本文系统介绍了基于Simulink平台构建的储能双向Buck-Boost变换器仿真模型,融合模型预测电流控制与电压下垂控制策略,面向锂电池储能系统的高效充放电管理。该模型深入实现了双闭环控制架构的设计与动态性能分析,涵盖系统建模、关键控制算法实现及稳定性验证,并配套提供参考文献以支撑理论深度与技术复现性。资源包还整合了多种典型电力电子拓扑的仿真案例,如各类DC-DC变换器、谐振变换器、PWM整流器等,充分体现了其在新能源发电、微电网能量调度及电力系统稳定控制中的广泛应用价值和技术延展性。; 适合人群:适用于电气工程、自动化、电力电子及相关专业的高校研究生、科研人员以及从事能源系统仿真与控制设计的工程技术人员;要求具备一定的Simulink/MATLAB操作能力及电力电子与自动控制基础知识;; 使用场景及目标:①深入理解双向Buck-Boost电路在储能系统中的工作机理与能量双向流动控制方法;②掌握模型预测控制(MPC)与下垂控制在实际电力变换系统中的建模流程与参数整定技巧;③为科研课题、学位论文或工程项目提供高可靠性、可复用的仿真原型与技术参考方案; 阅读建议:建议结合文中列出的参考文献与网盘提供的完整仿真资源,按照目录结构循序渐进地学习各模块案例,重点剖析控制逻辑搭建、调节器设计与系统动态响应特性,通过动手仿真与参数调试深化对控制策略性能与鲁棒性的理解。

Unity3d中物件(gameobject)的基础操作

物件的隐藏: 在编辑器界面,我们可以同过这个的勾选控制物件的隐藏和显示。 各位可以试试看~ 这里需要提醒一下,如果物体的初始状态如果是隐藏的话,我们无法通过find的任何方法找到相关的物件的哟~ 如果要在脚本里面控制隐藏和显示可以这样写: 这里的写法是4.0的写法,3.5的我就不再说了。 物件功能开关: 现在这个cu

摩摩翼的笔记 1909

产业园区在推动科技成果落地时,如何高效匹配企业与技术供给方.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

全桥LLC谐振(变频+移相混合控制)变换器闭环仿真模型(Simulink仿真实现)

内容概要:本文详细介绍了基于Simulink平台构建的全桥LLC谐振变换器闭环仿真模型,采用变频控制与移相控制相结合的混合调制策略,实现高效电能转换与高精度输出稳压。模型完整涵盖了系统建模、谐振腔参数设计、软开关技术实现、双闭环控制系统(如电压外环与频率/相位内环)设计及仿真验证全过程,重点突出零电压开通(ZVS)与零电流关断(ZCS)的实现机制,以显著降低开关损耗,提升变换器效率与动态响应性能。配套资源包含完整的Simulink仿真文件、详细的参数设计报告及核心参考文献,为深入理解LLC谐振变换器的工作机理、控制策略优化及其在开关电源、新能源发电等领域的工程应用提供了坚实的技术支撑。; 适合人群:具备电力电子技术、自动控制理论基础,从事高频开关电源、新能源变换器、车载充电机或相关方向研究的研究生、科研人员及电气工程师。; 使用场景及目标:①系统学习全桥LLC谐振变换器的精确建模与仿真方法;②掌握变频+移相混合控制策略的设计原理与实现技巧;③开展高效率、高功率密度电源变换器的科研攻关与工程项目开发;④深入理解软开关技术在实际电路中的应用与优势; 阅读建议:建议结合所提供的仿真模型与设计报告进行动手实践,重点分析控制器参数整定过程、谐振元件(Lr, Cr, Lm)的参数匹配关系,并仔细观察仿真波形,以深刻把握系统的稳态特性、瞬态响应能力及控制稳定性,从而全面提升对复杂谐振变换器系统的设计与分析水平。

【Unity3D基础概念】给初学者看的Unity概览(一):GameObject,Compoent,Time,Input,Physics...

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33978016的博客 252

LLC谐振变换器恒压恒流双竞争闭环控制simulink仿真(附说明文档)

内容概要:本文提供了一套针对LLC谐振变换器恒压恒流双竞争闭环控制的完整Simulink仿真资源,涵盖详细的仿真模型、设计说明文档及配套PPT讲解材料。该资源聚焦于电力电子领域中LLC谐振DC-DC变换器的核心控制策略,重点实现了在不同负载条件下恒压(CV)与恒流(CC)模式之间的无缝切换与双闭环竞争控制机制,确保系统具备高稳定性与动态响应性能。仿真平台基于Matlab/Simulink构建,适用于半桥或全桥LLC拓扑结构,内容包括谐振参数设计、变频控制(PFM)、软启动策略、反馈环路建模及闭环稳定性分析等关键技术环节,具有较强的工程实践价值和科研复现意义。; 适合人群:面向电力电子、电气工程及其自动化等相关专业的研究生、科研人员以及从事开关电源、新能源变换器研发的工程师,尤其适合具备基本电路理论和Simulink仿真操作经验的技术人员;; 使用场景及目标:①深入理解LLC谐振变换器的工作原理及其在恒压恒流输出控制中的实现方法;②支撑科研项目中对模式切换逻辑、软开关实现、系统抗扰能力与稳定性分析等关键问题的研究;③作为毕业设计、学术论文复现或工业级电源产品原型开发的重要技术参考;; 其他说明:资源配套提供了详尽的参数设计指导与PPT解析,有助于快速掌握建模思路与控制器整定方法,建议使用者结合自身应用场景调整谐振腔参数与PI控制器增益,以实现最优性能,同时可通过公众号“荔枝科研社”获取持续的技术支持与扩展资料。

[Unity]保存运行时对Scene中GameObject属性的修改

google中原链接已失效,只剩快照了(unity3d-save-your-in-play-transform-modifications),所以写篇文章记录一下. 很多时候,我们想把运行游戏时对场景中物体属性的修改保存下来,但一旦停止运行这些修改就恢复运行前的状态了。对于有原Prefab的物体比较好办,把运行中修改后的物体直接拖回去覆盖原Prefab即可.而对只在Scene中存在的GameOb

tlrainty的专栏 1万+

AIR780E二次开发点灯(LuatOS)

Air780E的LuatOS点灯教程,二次开发教程,可用于所有ec618平台,无需SDK

rootuseres的博客 1万+

ENVI新手避坑指南:手把手教你搞定遥感影像的坐标系转换(附ArcGIS对比)

本文详细解析ENVI与ArcGIS在遥感影像坐标系转换中的关键差异与实战技巧,特别针对新手常见问题提供避坑指南。从基础概念到高级操作,涵盖定义投影、UTM转换等核心步骤,并对比两种软件的处理精度与效率,帮助用户高效完成遥感影像处理任务。

weixin_42531925的博客 377

【Unity入门计划】基本概念(5)-游戏对象&组件

简单学习游戏对象和组件。

qq_41835314的博客 1518

Ubuntu离线情况下安装gcc编译器

Ubuntu离线情况下安装gcc编译器1.系统版本2.安装说明3.异常处理 1.系统版本 (1)Ubuntu系统版本:20.04.1LTS; (2)gcc编译器版本:gcc-9.3.0(下载链接为https://download.csdn.net/download/qq_18350351/13762214); 当前可找到的gcc最新版本为gcc-10,但是笔者在安装gcc-10版本时发现一些依赖项无法安装,因此选取了gcc-9版本。如果是在联网情况下安装,直接使用apt相关的安装指令即可。 2.安装说明 安

GreenHand的博客 3932

Unity3d Time的使用

Time类包含了一个重要的类变量deltaTime,它表示距上一次调用Update或FixedUpdate 所用的时间。 因此通过它可以让游戏对象按照一个常速进行旋转,而不是依赖于它的帧频: function Update() {    tranform.Rotate(0, 5 * Time.deltaTime, 0); }   同样地移动效果: function

夜空的流星的专栏 2万+

三菱PLC通信库大比拼:手把手教你用C#实现最高效的McProtocol数据读写

本文深入比较了三菱PLC通信库的性能,重点介绍了如何使用C#高效实现McProtocol数据读写。通过实测数据对比HslCommunication、McProtocol-next和自定义方案的优劣,提供优化技巧和代码示例,帮助开发者在工业自动化场景中提升通信效率。

m0n1o2p的博客 255

MATLABGUI读取文件并将路径显示在文本框中

MATLABGUI读取文件并将路径显示在文本框中

m0_50305149的博客 2649

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

【明道云】如何让用户可以新增但不能修改记录

在设计表单时直接将字段设置只读是不行的。字段设置只读将会直接让界面上此字段的前端组件不可编辑。

每日出拳老爷子的博客 701

Unity3D游戏引擎最详尽基础教程

转自:http://blog.sina.com.cn/s/blog_7c336a8301013son.html 我一直向所有想做游戏的朋友推荐Unity3D,为什么呢?首先是因为专业,Unity3D非常强大,用它创建一个类似MiniGore这样的3D平面射击游戏简直轻而易举,而就连使命召唤这样的大型3d游戏,如果素材得当也不在话下。二是因为易用,他的操作非常容易,而使用的脚本语言又是JavaSc

优秀技术文章收录 7万+

使用GitLab限制开发者使用CI/CD的权限,三种方案

使用三种方案来限制开发人员的CI/CD权限。

知无涯 5095

在 RAP 中把业务对象“搬到网口上”:service definition 与 service binding 的全流程、范式与实战

本文解析了SAP ABAP开发中service definition和service binding的关键作用。service definition负责选择要暴露的CDS实体和行为,形成服务模型;而service binding则将服务绑定到具体协议(如OData),生成可访问的端点。两者分离带来三大优势:支持同一模型多重发布、降低环境迁移耦合度、强化安全治理。文章通过预订业务对象的端到端示例,展示了如何从CDS建模到生成Fiori Elements预览。最后以售后工单业务为例,说明这种架构如何支持内外服务

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 390
上一篇: Unity3D游戏开发之GUI的使用
下一篇: unity自带LightMapping和3Ds Max烘焙贴图的小对比
七大黍
博客等级 码龄20年 436粉丝 260原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值