Unity官方免费入门课程学习记录

Unity官方共100多个免费教程,其中有比较专业的系统的,也有针对某一个点的。对学的课程做一个整理和一点点总结。

新手入门:

Ruby's Adventure:2D 初学者 | Unity 中文课堂 (u3d.cn)

基础知识,基本上各个部分:地图编辑、动画、音频、碰撞这些都有涉及,并且包括脚本代码的编写内容。

C#初级编程 | Unity 中文课堂 (u3d.cn)

里面涉及编程基础知识的(比如变量、if循环)是非常小白的,但是其他和C#以及unity有关的部分(函数介绍、使用)还是非常有用的。

7.Awake 和 Start

Awake先被调用,及时该脚本组件还未被启用,适合在脚本与初始化之间设置任何引用

“是否启用”指的是图中Script组件小框是否打勾

 Start在Awake之后被调用,而且是首次更新之前调用,前提是已经启用了该脚本组件;这样可以将初始化代码的任何部分延迟到真正需要的时候进行(?);

这样可以在启用脚本组件前初始化对象的设置,而不需要将脚本拆分成几个不同脚本(?)。

8.Update 和 FixedUpdate

简单来说,Update的方式是按帧,而不是固定时间间隔。这就导致有时候每帧处理的时间可能会不一样,实际的时间间隔也不一样。适用场合:非物理对象移动、简单计时器、输入检测

截图来自教程

 FixedUpdate就明显不同,它按照固定的时间间隔调用,调用的时间间隔相同。“调用后会立即进行任何必要的物理计算。任何影响到刚体(即物理对象)的动作都应该使用FixedUpdate执行。在此循环中编写的物理脚本最好使用‘力’来定义移动”。

9、10,禁用组件与激活游戏对象

enabled的对象是组件,脚本挂载哪个物体上,enabled的对象就是哪个物体拥有的组件。格式为xxxx.enabled(xxxx表示组件,即xxxx = GetComponent<某组件>(),xxxx需要先被定义声明);

而SetActive用来激活或禁用,可true可false,对象是gameObject,即脚本所挂载的gameObject。格式为gameObject.SetActive(false)(gameObject不需要被声明或定义);

这里要区分一个概念:禁用和“是否活跃”(也就是上图中框框是否打勾)。如果父对象禁用,子对象也会禁用,但勾勾还在,也即“仍在其层次结构中保持活跃状态”;如果要查阅其他gameObject的状态是否保持活跃,需要用CheckState的两个函数,activeSelf和activeInHierarchy。用法是myObject.activeSelf或myObject.activeInHierarchy,myObject需要先被声明:public GameObject myObject。

activeSelf表示本身的勾勾在不在,activeInHierarchy表示实际上是否停用。比如停用父对象,子对象的activeInHierarchy也是false,但activeSelf可以为true。

另,如果子对象是随着父对象的停用而停用,这是使用SetActive来激活是没有用的。

12.Translate 和 Rotate

Translate,位置移动

Rotate,沿轴翻转(注意区分是世界轴还是物体本身的轴)。

格式:transform.Translate(Vector3.forward );/transform.Translate(new Vector3(0,0,1));

“如果想用碰撞体移动某个对象,也就是将会产生物理作用的物体,则不应使用Translate和Rotate函数,而应考虑使用Physics函数”。

按下按键再移动:

if(Input.GetKey(KeyCode.UpArrow))

transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);

14.线性插值

需要对场景进行光强度变化时候用,不过不知道2D可不可以……

15.Destroy

可以用来销毁游戏对象GameObject以及组件Component,GameObject可以是脚本挂载对象也可以是游戏中的其他对象;

可以有第二个参数,Destroy(gameObject,3f)表示延迟3秒。

16.GetButton 和 GetKey

首先,GetKey传入参数为按键名称或KeyCode,如Input.GetKey(KeyCode.Space);而GetButton、GetAxis传入参数只能为InputManager中定义的轴键,比如“Jump”,Input.GetButton("Jump")。Jump的按键由自己再InputManager中指定。

这些函数返回的都是布尔值。以课程中的GetButton为例,有GetButton、GetButtonDown、GetButtonUp三个函数。

什么都不按时

按下按键时,第一帧Down和Button都返回true

按住按钮之后的几帧,Down是false,Button是true

松开按键的第一帧,Up返回true,其他false。接着回到图一全false

 17.GetAxis

GetAxis经常和translate放在一起做移动、改变位置。和GetButton差不多但是返回不是布尔值而是浮点值,介于-1到1。

下面是几个InputManager中相关的参数:

Gravity:松开按钮后归零的速度,越大归零越快;

Sensitivity:输入是达到-1或1的速度多快,与Gravity相反,越小越流畅;

Dead:盲区(?);

Span:同时按下正负归零。

Input.GetAxis("Raw")仅返回整数,不返回浮点数。不需要Gravity和Sensitivity。

18.OnMouseDown

用鼠标点击游戏中的对象。

19.GetComponent

20.DeltaTime

因为完成每帧的时间可能不同,需要DeltaTime变平滑。使移动按秒而不是按帧。

23.Instantiate

复制预制体相关

25.Invoke

函数调用,Invoke ("SpawnObject", 2);前一个参数为函数名称,后一个参数为调用时间;

InvokeRepeating("SpawnObject", 2, 1);第三个参数为间隔多久调用一次;

CancelInvoke停止调用Repeating。

Hi Shader | Unity 中文课堂 (u3d.cn)

MeshFilter、MeshRenderer、Material

图片来自教程

MeshFilter 网格过滤器:选择素材传给MeshRender

MeshRenderer 网格渲染器:将素材绘制在unity中

Material 材质球:“决定了物体表面的外观将以怎样的质地呈现到我们眼前”

Mesh指的就是模型的网格,它决定了物体的表面形状是怎样的,一个模型的表面大多是由多个彼此相连的三角面构成,当然也有其它类型。

一些参数什么的就不贴过来了。

渲染

渲染管线通常来说就是在虚拟相机、三维物体、光源、照明模式、纹理等诸多条件都给定的情况下,生成 或是绘制一幅二维图像的过程。

一般这个过程会分为四个主要阶段:应用程序阶段、几何阶段、光栅化阶段、像素处理阶段。而每个阶段 又会分为很多个部分。

图片来自教程

tt

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值