组件的概念

组件:一个或多个功能的容器,类似模块,插上去就有这个功能,不查没有

存在意义:

  • 如果太依赖继承,继承树将会特别复杂
  • 组件化设计思想有利于维护拓展

unity内任何游戏物体必须有Transform组件

unity中大多数情况下,我们写的c#脚本就是一个组件


从代码角度认识GameObject

任何组件身上都有一个gameObject,代表它所在的GameObject(宿主)

主要属性

  • name:游戏物体的名称
  • tag:游戏物体的标签
  • layer:游戏物体的层分类
Debug.Log(gameObject.name);//打印出GameObject的名字
gameObject.name = "Game Object";//修改GameObject的名字
Debug.Log(gameObject.name);//打印出GameObject的名字 if (gameObject.tag == "Player")
{
Debug.Log("This is a player object");//判断GameObject的tag是否为Player
}

主要行为

  • SetActive:是否显示
  • AddComponent:添加组件
  • GetComponents:获取组件
  • GetComponents:获取多个组件(允许一个组件重复添加,但是一般不会)
  • GetComponentInChildren:从子物体身上查找组件
  • GetComponentInParent:从父物体身上查找组件
  • <T>:泛型,后续细说,目前简单理解为“确定一个类型”

销毁组件的方式

Destory(gameObject.GetComponent<XXXXController>());

Transform组件基本信息

GameObject有个属性就是transfrom,代表它所在GameObjectTransform组件

主要属性

  • position:坐标
  • rotation:旋转 (四元数格式)
  • eulerAngles:旋转(欧拉角模式)
  • localScale:缩放
  • localPositionlocalRotationlocalEulerAngels:是相对父物体的坐标和旋转
  • parent:父物体的transform
  • childCount:子物体的数量
  • root:自身的根节点(父的父的父到最上层)

主要行为

  • GetChild:获取第X个子物体
  • SetParent:设置自身为某个游戏物体的子物体
  • Find:查找子物体,参数是路径,填写方式类似文件夹"A/B/C"

坐标和Vector结构体

unity中2D和3D没有本质上的区别,unity中的2D场景就是Z轴值为0的3D场景

世界坐标系:相对世界的坐标

局部坐标系:相对父物体的坐标

Translate维护父子结构

删除一个GameObject

  • Destroy:销毁物体,但不会立即销毁,而是在Update执行后执行销毁操作
  • DestroyImmediate:立即销毁物体,销毁完物体才会执行下一行代码

父子结构相关的属性与函数

  • parent:父物体的transform
  • childCount:子物体的数量
  • root:自身的根节点(父的父的父到最上层)
  • GetChild:获取第X个子物体
  • SetParent:设置自身为某个游戏物体的子物体

组件的生命周期

如字面意思,生命周期就是生老病死的一个轮回。类似地,在unity中指的是一个组件从创建到销毁的所有阶段,这些阶段肯定要做一些事情,这些事情就是生命周期函数

Tips:官方一般称为“事件函数”

关键生命周期函数

  • Awake(针对自身):始终在任何Start函数之前GameObject创建后调用此函数。(如果游戏对象在启动期间处于非活动状态,则在激活之后才会调用Awake
  • OnEanble(针对自身):在启用对象后立即调用此函数
  • Start(针对自身):仅当启用脚本实例后,才会在第一次帧更新之前调用Start
  • Update(针对自身):每帧调用一次 Update。这是用于帧更新的主要函数
  • LateUpdate(针对自身):在LateUpdate完成后执行一次
  • OnDisable(针对自身):被禁用或处于非活动状态时,调用此函数
  • OnDestroy(针对自身):对象存在的最后一帧完成所有帧更新之后,调用此函数(可能因为Destroy函数或在场景关闭时销毁该对象)

//TODO:需要补充一些

帧的深度了解

游戏、视频的原理就是不停的刷新画面,那么这个刷新一定存在频率,这就是帧率(FPS),比如60FPS就是每秒刷新60次画面

假设游戏稳定在60PFS的状态下,那么Update就是1/60秒执行一次,也就是每秒执行60次

unity学习笔记(一)的更多相关文章

  1. 微软企业库Unity学习笔记

    本文主要介绍: 关于Unity container配置,注册映射关系.类型,单实例.已存在对象和指出一些container的基本配置,这只是我关于Unity的学习心得和笔记,希望能够大家多交流相互学习 ...

  2. Unity学习笔记

    『 知识点』 [射线] 射线检测碰撞 『游戏实战』 个例 [E]<愤怒的小鸟> 资源 免费Unity基础教程(中文电子书) [E] noobtus(Unity游戏教程)

  3. Unity学习笔记(一)——基本概念之场景(Scene)

    场景,顾名思义就是我们在游戏中所看到的物品.建筑.人物.背景.声音.特效等,基本上和我们玩游戏时所看到的游戏“场景”是同一个概念. Unity 3D中,“场景”是一个视图,我们通过“场景”这个视图,来 ...

  4. Unity学习笔记(4):依赖注入

    Unity具体实现依赖注入包含构造函数注入.属性注入.方法注入,所谓注入相当赋值,下面一个一个来介绍 1:构造函数注入 1.1当类有多个构造函数时,可以通过InjectionConstructor特性 ...

  5. Unity学习笔记(3):获取对象

    在上一篇文章中(Unity映射注册)中概要介绍了Unity中的映射机制,本节主要介绍对象获取,包括默认获取,通过名称获取,获取全部对象,同时通过加载配置文件,然后再获取对象. 通过代码获取对象 方式1 ...

  6. Unity学习笔记(2):注册映射

    在上一篇文章中(认识Unity)中概要介绍了Unity和Ioc,本节主要介绍IoC中的注册映射,并使用代码和配置文件两种方式进行说明. 定义依赖注入相关信息 定义ILogger接口 public in ...

  7. Unity学习笔记(1):认识Unity

    Unity是什么? Unity是patterns & practices团队开发的一个轻量级.可扩展的依赖注入容器,具有如下的特性: 它提供了创建(或者装配)对象实例的机制,而这些对象实例可能 ...

  8. Unity学习笔记(二)——第一个Unity项目Hello Unity

    保留版权,转载请注明出处:http://blog.csdn.net/panjunbiao/article/details/9318811 在这一篇文章里,参照宣雨松的<Unity 3D游戏开发& ...

  9. Digital Tutors - Introduction to Scripting Shaders in Unity 学习笔记

    1. Overview 2. Understanding Shader definition:code that define what the material can do in the envi ...

  10. Digital Tutors - Creating an Action Adventure Puzzle in Unity学习笔记

    遇到的问题: 1 第11节Scripting the pressure plates中需要获取子物体的Animator组件,教程使用的语句如下: ”SwitchAnim = GetComponentI ...

随机推荐

  1. 韦东山freeRTOS系列教程之【第七章】互斥量(mutex)

    目录 系列教程总目录 概述 7.1 互斥量的使用场合 7.2 互斥量函数 7.2.1 创建 7.2.2 其他函数 7.3 示例15: 互斥量基本使用 7.4 示例16: 谁上锁就由谁解锁? 7.5 示 ...

  2. 常用IDE(开发工具)

    一.开发工具 Visual Studio Microsoft Visual Studio(简称VS)是微软公司提供的IDE,可以在VS上编写C.C++.C#等多种语言的项目,所写的代码适用于微软支持的 ...

  3. 火山引擎ByteHouse发布高性能全文检索引擎

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群.  随着数字时代的发展,数据的来源和生成方式越来越广泛,数据形态也愈加丰富.   以某电商平台的数据情况举例.该电 ...

  4. vs2019如何自动生成有下划线前缀的字段名?

    vs2019代码自动完成功能非常强大,今天要说的是根据构造函数的参数自动生成字段的事儿. 下图所示,IDE可以根据构造函数的参数自动生成私有字段 这个功能非常好,代码编写效率大大提升,生成的代码如下: ...

  5. Pandas库学习笔记(3)---Pandas Series

    Pandas Series Pandas Series基本操作 pandas.Series Series结构如下: pandas.Series(data, index, dtype, copy) 构造 ...

  6. Oracle 死锁与慢查询总结

    查看死锁 SELECT s.sid "会话ID", s.lockwait "等待锁", s.event "等待的资源/事件", -- 最近等 ...

  7. NIO的三大核心组件详解,充分说明为什么NIO在网络IO中拥有高性能!

    一.写在开头 我们在上一篇博文中提到了Java IO中常见得三大模型(BIO,NIO,AIO),其中NIO是我们在日常开发中使用比较多的一种IO模型,我们今天就一起来详细的学习一下. 在传统的IO中, ...

  8. Gartner web3 的未来市场前景

    内行人叫web3 外行人叫元宇宙 元宇宙(Metaverse) Gartner将元宇宙定义为一个由通过虚拟技术增强的物理和数字现实融合而成的集体虚拟共享空间.这个空间具有持久性,能够提供增强沉浸式体验 ...

  9. (续)signal-slot:python版本的多进程通信的信号与槽机制(编程模式)的库(library) —— 强化学习ppo算法库sample-factory的多进程包装器,实现类似Qt的多进程编程模式(信号与槽机制) —— python3.12版本下成功通过测试

    前文: signal-slot:python版本的多进程通信的信号与槽机制(编程模式)的库(library) -- 强化学习ppo算法库sample-factory的多进程包装器,实现类似Qt的多进程 ...

  10. 如何配置docker pull代理

    参考: https://blog.csdn.net/vic_qxz/article/details/130061661 经过验证确实有效.