unity学习笔记(一)
组件的概念
组件:一个或多个功能的容器,类似模块,插上去就有这个功能,不查没有
存在意义:
- 如果太依赖继承,继承树将会特别复杂
- 组件化设计思想有利于维护拓展
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,代表它所在GameObject的Transform组件
主要属性
position:坐标rotation:旋转 (四元数格式)eulerAngles:旋转(欧拉角模式)localScale:缩放localPosition、localRotation、localEulerAngels:是相对父物体的坐标和旋转parent:父物体的transformchildCount:子物体的数量root:自身的根节点(父的父的父到最上层)
主要行为
GetChild:获取第X个子物体SetParent:设置自身为某个游戏物体的子物体Find:查找子物体,参数是路径,填写方式类似文件夹"A/B/C"
坐标和Vector结构体
unity中2D和3D没有本质上的区别,unity中的2D场景就是Z轴值为0的3D场景
世界坐标系:相对世界的坐标
局部坐标系:相对父物体的坐标
Translate维护父子结构
删除一个GameObject
Destroy:销毁物体,但不会立即销毁,而是在Update执行后执行销毁操作DestroyImmediate:立即销毁物体,销毁完物体才会执行下一行代码
父子结构相关的属性与函数
parent:父物体的transformchildCount:子物体的数量root:自身的根节点(父的父的父到最上层)GetChild:获取第X个子物体SetParent:设置自身为某个游戏物体的子物体
组件的生命周期
如字面意思,生命周期就是生老病死的一个轮回。类似地,在unity中指的是一个组件从创建到销毁的所有阶段,这些阶段肯定要做一些事情,这些事情就是生命周期函数
Tips:官方一般称为“事件函数”
关键生命周期函数
Awake(针对自身):始终在任何Start函数之前GameObject创建后调用此函数。(如果游戏对象在启动期间处于非活动状态,则在激活之后才会调用Awake)OnEanble(针对自身):在启用对象后立即调用此函数Start(针对自身):仅当启用脚本实例后,才会在第一次帧更新之前调用StartUpdate(针对自身):每帧调用一次Update。这是用于帧更新的主要函数LateUpdate(针对自身):在LateUpdate完成后执行一次OnDisable(针对自身):被禁用或处于非活动状态时,调用此函数OnDestroy(针对自身):对象存在的最后一帧完成所有帧更新之后,调用此函数(可能因为Destroy函数或在场景关闭时销毁该对象)
//TODO:需要补充一些
帧的深度了解
游戏、视频的原理就是不停的刷新画面,那么这个刷新一定存在频率,这就是帧率(FPS),比如60FPS就是每秒刷新60次画面
假设游戏稳定在60PFS的状态下,那么Update就是1/60秒执行一次,也就是每秒执行60次
unity学习笔记(一)的更多相关文章
- 微软企业库Unity学习笔记
本文主要介绍: 关于Unity container配置,注册映射关系.类型,单实例.已存在对象和指出一些container的基本配置,这只是我关于Unity的学习心得和笔记,希望能够大家多交流相互学习 ...
- Unity学习笔记
『 知识点』 [射线] 射线检测碰撞 『游戏实战』 个例 [E]<愤怒的小鸟> 资源 免费Unity基础教程(中文电子书) [E] noobtus(Unity游戏教程)
- Unity学习笔记(一)——基本概念之场景(Scene)
场景,顾名思义就是我们在游戏中所看到的物品.建筑.人物.背景.声音.特效等,基本上和我们玩游戏时所看到的游戏“场景”是同一个概念. Unity 3D中,“场景”是一个视图,我们通过“场景”这个视图,来 ...
- Unity学习笔记(4):依赖注入
Unity具体实现依赖注入包含构造函数注入.属性注入.方法注入,所谓注入相当赋值,下面一个一个来介绍 1:构造函数注入 1.1当类有多个构造函数时,可以通过InjectionConstructor特性 ...
- Unity学习笔记(3):获取对象
在上一篇文章中(Unity映射注册)中概要介绍了Unity中的映射机制,本节主要介绍对象获取,包括默认获取,通过名称获取,获取全部对象,同时通过加载配置文件,然后再获取对象. 通过代码获取对象 方式1 ...
- Unity学习笔记(2):注册映射
在上一篇文章中(认识Unity)中概要介绍了Unity和Ioc,本节主要介绍IoC中的注册映射,并使用代码和配置文件两种方式进行说明. 定义依赖注入相关信息 定义ILogger接口 public in ...
- Unity学习笔记(1):认识Unity
Unity是什么? Unity是patterns & practices团队开发的一个轻量级.可扩展的依赖注入容器,具有如下的特性: 它提供了创建(或者装配)对象实例的机制,而这些对象实例可能 ...
- Unity学习笔记(二)——第一个Unity项目Hello Unity
保留版权,转载请注明出处:http://blog.csdn.net/panjunbiao/article/details/9318811 在这一篇文章里,参照宣雨松的<Unity 3D游戏开发& ...
- 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 ...
- Digital Tutors - Creating an Action Adventure Puzzle in Unity学习笔记
遇到的问题: 1 第11节Scripting the pressure plates中需要获取子物体的Animator组件,教程使用的语句如下: ”SwitchAnim = GetComponentI ...
随机推荐
- 跟我一起学习和开发动态表单系统-前端用vue、elementui实现方法(3)
基于 Vue.Element UI 和 Spring Boot + MyBatis 的动态表单系统前端实现解析 在现代企业信息系统中,动态表单是一种非常常见的功能.它可以根据业务需求灵活地调整表单结构 ...
- Asp .Net Core 系列:基于 Castle DynamicProxy + Autofac 实践 AOP 以及实现事务、用户填充功能
目录 什么是 AOP ? .Net Core 中 有哪些 AOP 框架? 基于 Castle DynamicProxy 实现 AOP IOC中使用 Castle DynamicProxy 实现事务管理 ...
- 第一个Vert.x程序(基于Gradle7)
这里跑一下Vert.x中文站的入门程序(以后就不写那个点了,或者干脆写vx)简易教程.这个程序非常简单,为啥还写一下呢?因为里面的依赖有点老,已经不能直接成功启动了. 搭建项目 通过IDEA创建Gra ...
- 基于python3 flet库的证书查看工具
前言 基于python3 flet库实现了证书信息的提取,留作自用,如有错误欢迎指正. 正文 程序架构: 主程序 main.py 证书解析程序 certHandle.py 运行 python main ...
- 拆解LangChain的大模型记忆方案
之前我们聊过如何使用LangChain给LLM(大模型)装上记忆,里面提到对话链ConversationChain和MessagesPlaceholder,可以简化安装记忆的流程.下文来拆解基于Lan ...
- [oeasy]python0100_wintel联盟_intel_微软_microsoft_msDOS_基尔代尔
wintel联盟 回忆上次内容 上次 了解了IBM的 背水一战 IBM 已经不在乎 软硬一体全自主的设计 了 而采用了 开放的架构 任何 硬件厂商和软件厂商 都可以来合作 以丧失 自主控制力的方式 获 ...
- 学习笔记--Java中final关键字
Java中final关键字 关于Java语言中的final关键字: final是一个关键字,表示:最终的,不可改变 final修饰的类无法被继承 final修饰的方法无法被覆盖 final修饰的变量一 ...
- mybatis关于大于小于:元素内容必须由格式正确的字符数据或标记组成。
首先是原因: mybatis中< >这两个符号会被识别为标签的开始和结束,用了就会报解析的错误 会报错类似下面这些 1.元素内容必须由格式正确的字符数据或标记组成. 2.Error cre ...
- IP地址的精细化操作(将IP地址转为相对应的地址)
第一步: 导入maven依赖: <dependency> <groupId>org.lionsoul</groupId> <artifactId>ip2 ...
- 【WSDL】02 四种客户端调用方式
WSDL概念和一些语法内容: https://www.w3school.com.cn/wsdl/index.asp SOAP概念: https://www.runoob.com/soap/soap-t ...