SiKi学院 Unity中常用api学习笔记(001-014)

Api 应用程序编程接口

前言

笔记是看siki学院中《Unity中常用api》的学习笔记

课程地址:  http://www.sikiedu.com/my/course/59

强烈推荐大家去看老师的课

 

学习方法(001)

学习中切忌死记硬背,尤其是在学习代码中,要实际动手操作一下。

常用的方法经常使用,不常用的方法留下印象(看Unity文档和api手册)。

什么是事件函数(002)

unity中创建的所有脚本,都默认继承MonoBehaviour。

MonoBehavior——Behavior——Component——Object(继承关系)

默认有Start()方法   开始执行一次;和Update()方法  每帧可执行多次

事件函数的执行顺序(Unity中文手册):https://docs.unity.cn/cn/current/Manual/ExecutionOrder.html

事件函数的执行时机和先后顺序(004)

1.Editor

Reset函数,编辑前就会调用执行。

2.Initialization

Awake函数,Onenable函数(onDisable函数后也可以调用),Start函数在场景启用或者物体被实例化后,就会被调用。

3.Physics

FixedUpdate函数,每秒固定调用一定次数(多次)。//与帧数不挂钩

OnTriggerXXX函数,OnCollisionXXX函数;(用于触发器和碰撞器)

yleld WaltForFixedUpdate函数。

4.Input events

OnMouseXXX函数,输入事件(鼠标)。

5.Game logic

Update函数,每帧运行一次函数。

(Internal animatiom update)

LateUpdate函数

6.Scene rendering

(与场景渲染有关的函数)

7.Gizmo rendering

OnDrawGizmos函数,辅助线

8.GUI rendering

OnGUI函数,(现在基本不用,用UGI)

9.Pausing

OnApplicationPause函数,暂停的时候运行

10.Disable/enable

OnDisable函数

11.Decommissioning

退出场景时运用,物体会被销毁

OnApplicationQuit函数,OnDisable函数, OnDestroy函数。

 

Time类中的静态变量介绍(005)

Unity中文手册(Time类):https://docs.unity.cn/cn/current/ScriptReference/Time.html

captureFramerate减慢游戏播放时间,以便在帧之间保存屏幕截图。
deltaTime完成上一帧所用的时间(以秒为单位)(只读)。
fixedDeltaTime执行物理和其他固定帧率更新(如 MonoBehaviour 的 FixedUpdate)的时间间隔(以秒为单位)。
fixedTime最近一次 FixedUpdate 已启动的时间(只读)。此为自游戏启动以来的时间(以秒为单位)。
fixedUnscaledDeltaTime从上一个固定帧到当前固定帧的独立于 timeScale 的时间间隔(以秒为单位)(只读)。
fixedUnscaledTime最近一次 FixedUpdate 已启动的独立于 TimeScale 的时间(只读)。此为自游戏启动以来的时间(以秒为单位)。
frameCount已经过的总帧数(只读)。
inFixedTimeStep如果在固定时间步长回调(如 MonoBehaviour 的 FixedUpdate)内调用,则返回 true,否则返回 false。
maximumDeltaTime帧可以耗用的最长时间。物理和其他固定帧率更新(如 MonoBehaviour 的 FixedUpdate)将仅在每帧的该持续时间内执行。
maximumParticleDeltaTime帧可以在粒子更新上耗用的最长时间。如果帧耗用的时间超过该值,则将更新拆分为多个较小的更新。
realtimeSinceStartup游戏开始以来的实际时间(只读)。
smoothDeltaTime经过平滑处理的 Time.deltaTime(只读)。
time该帧开始的时间(只读)。此为自游戏启动以来的时间(以秒为单位)。
timeScale时间流逝的缩放。可用于慢动作效果。
timeSinceLevelLoad该帧开始以来的时间(只读)。此为自加载上一个关卡以来的时间(以秒为单位)。
unscaledDeltaTime从上一帧到当前帧的独立于 timeScale 的时间间隔(以秒为单位)(只读)。
unscaledTime该帧的独立于 timeScale 的时间(只读)。此为自游戏启动以来的时间(以秒为单位)。

TimedeltaTime和realTimeSinceStartup的使用(006)

Time.deltaTime

时间间隔,一般用来控制一些动画效果;比如移动物体可以:Vector3.forward* Time.deltaTime 来控制3D物体的移动。

Time.timeScale

控制时间的倍数。(控制Time和deltaTime)

Time.realTimeSinceStartup

计算游戏开始运行到现在时间,可用于性能测试,比如:

float time1 = Time.realTimeSinceStartup;
for(int i; i < 10000; i++)
{
method();
}
float time2 = Time.realTimeSinceStartup;
Debug.Log(time2 - time1);

创建游戏物体的三种方法(007)

构造方法

new

在Start函数中 new一个GameObjective。(空的游戏物体)比如: GameObject go = new GameObject("Cube")

Instantiate

根据prefab进行实例化(预设一个游戏物体)比如: GameObject.Instantiate(prefab)

或者可以克隆其他物体。

CreatePrimitive

创建一些原始的图形,比如: GameObject.CreatePrimitive(PrimitiveType.Plane)

还可以是Capsule , Cube , Cylinder , Plane , Quad , Sphere。

如何给游戏物体通过代码添加组件(008)

可以添加内部组件,也可以添加自定义的脚本

GameObject go = new GameObject("Cube")
go.AddComponent<Rigidbody>();  //添加刚体组件
go.RemoveComponent<Rigidbody>();//移除组件

如何禁用和启动一个游戏物体(009)

tag 标签(区分不同的游戏物体);transform 物体的位置;

activeInHerit 是否处于激活状态; activeSelf 物体是否被禁用(子物体在父物体下有关)

GameObject go = new GameObject();
go.SetActive(false);  //禁用物体
go.SetActive(true);  //激活物体

GameObject、Component和Object的千丝万缕的关系(010)

UnityEngine下Object用有的静态方法(011)

Unity中文手册(UnityEngine下Object):

https://docs.unity.cn/cn/current/ScriptReference/Object.html

变量

hideFlags该对象应该隐藏、随场景一起保存还是由用户修改?
name对象的名称。

公共函数

GetInstanceID返回对象的实例 ID。
ToString返回 GameObject 的名称。

静态函数

Destroy删除 GameObject、组件或资源。
DestroyImmediate立即销毁对象 /obj/。强烈建议您改用 Destroy。
DontDestroyOnLoad在加载新的 Scene 时,请勿销毁 Object。
FindObjectOfType返回第一个类型为 type 的已加载的激活对象
FindObjectsOfType返回所有类型为 type 的已加载的激活对象的列表。
Instantiate克隆 original 对象并返回克隆对象。

运算符

bool该对象是否存在?
operator !=比较两个对象是否引用不同的对象。
operator ==比较两个对象引用,判断它们是否引用同一个对象。

 

GameObject独有的静态方法(012)

Unity中文手册(UnityEngine下GameObject):

https://docs.unity.cn/cn/current/ScriptReference/GameObject.html

变量

activeInHierarchy定义 GameObject 在 Scene 中是否处于活动状态。
activeSelf此 GameObject 的本地活动状态。(只读)
isStatic仅限 Editor 的 API,指定游戏对象是否为静态。
layer该游戏对象所在的层。
scene该 GameObject 所属的场景。
tag此游戏对象的标签。
transform附加到此 GameObject 的 Transform。

构造函数

GameObject

创建一个名为 name 的新游戏对象。

静态函数

CreatePrimitive创建一个具有原始网格渲染器和相应碰撞体的游戏对象。
Find按 name 查找 GameObject,然后返回它。
FindGameObjectsWithTag返回标记为 tag 的活动 GameObject 的列表。如果未找到 GameObject,则返回空数组。
FindWithTag返回一个标记为 tag 的活动 GameObject。如果未找到 GameObject,则返回 null。

 

游戏物体间消息的发送和接收(013)

Unity中文手册(UnityEngine下GameObject):

https://docs.unity.cn/cn/current/ScriptReference/GameObject.html

Message类

BroadcastMessage调用此游戏对象或其任何子项中的每个 MonoBehaviour 上名为 methodName 的方法。(广播消息)
SendMessage调用此游戏对象中的每个 MonoBehaviour 上名为 methodName 的方法。
SendMessageUpwards调用此游戏对象中的每个 MonoBehaviour 上或此行为的每个父级上名为 methodName 的方法。

得到组件的各种方法函数(014)

Unity中文手册(UnityEngine下GameObject):

https://docs.unity.cn/cn/current/ScriptReference/GameObject.html

AddComponent将名为 className 的组件类添加到该游戏对象。
CompareTag此游戏对象是否使用 tag 进行了标记?
GetComponent如果游戏对象附加了类型为 type 的组件,则将其返回,否则返回 null。
GetComponentInChildren使用深度首次搜索返回 GameObject 或其任何子项中类型为 type 的组件。
GetComponentInParent返回 GameObject 或其任何父项中类型为 type 的组件。
GetComponents返回 GameObject 中类型为 type 的所有组件。
GetComponentsInChildren返回 GameObject 或其任何子项中类型为 type 的所有组件。
GetComponentsInParent返回 GameObject 或其任何父项中类型为 type 的所有组件。
SetActive根据给定的值 true 或 /false/,激活/停用 GameObject。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值