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。 |
SiKi学院 Unity中常用api学习笔记(001-014)相关推荐
- SiKi学院 Unity中常用api学习笔记(015-019)
Api 应用程序编程接口 前言 笔记是看siki学院中<Unity中常用api>的学习笔记 课程地址: http://www.sikiedu.com/my/course/59 强烈推荐大 ...
- JAVA中常用api学习思维导图
- 7 种 Javascript 常用设计模式学习笔记
7 种 Javascript 常用设计模式学习笔记 由于 JS 或者前端的场景限制,并不是 23 种设计模式都常用. 有的是没有使用场景,有的模式使用场景非常少,所以只是列举 7 个常见的模式 本文的 ...
- Crypto API 学习笔记一
标 题: [原创]Crypto API 学习笔记一 作 者: jdxyw 时 间: 2006-09-01,16:47 链 接: http://bbs.pediy.com/showthread.php? ...
- Unity中Android API 28之后无法HTTP请求
本文节选自洪流学堂公众号技术专栏<大话Unity2019>,未经允许不可转载. 洪流学堂公众号回复log,获取最新版运行时查看日志的工具. 小新:"最近我升级到Android A ...
- 删除mysql指令_MySQL常用命令学习笔记
本文转载自[微信公众号:WalkingCloud,ID:WalkingCloud2018]经微信公众号授权转载,如需转载与原文作者联系 MySQL常用命令学习笔记 一.数据库相关操作 1)创建数据库 ...
- 常用API类方法笔记整理1
常用API类方法笔记整理1 1.文档注释 文档注释是功能级注释,用来说明一个类,一个方法或一个常量的,因此只在上述三个地方使用. 文档注释可以使用java自带的命令javadoc来对这个类生成手册. ...
- algorithm头文件下的常用函数-学习笔记
algorithm头文件下的常用函数-学习笔记 max(x,y),min(x,y),abs(x) swap(x,y) reverse(it,it2) next_permutation() fill( ...
- javascript:常用API学习Math.random, toString,slice(),substr(),Math.ceil()
javascript:常用API学习 1.获得随机数:Math.random() 如何随机获得整数? 2.如何转进制:十进制转二进制?: 变量名.toString(进制数) 3. 36进制:能把一个小 ...
最新文章
- System.in.read()的用法
- 推荐系统技术演进趋势:召回-排序-重排
- asp.net core mvc 异步表单(Ajax.BeginForm)
- iPhoneX 序列适配方案
- 河北外国语学院计算机宿舍,河北外国语学院宿舍怎么样 住宿条件好不好
- cmd imp导入dmp文件_exp/imp、expdp/impdp使用总结,这些你都清楚吗?
- 19-matlab知识点复习二
- 调用Google翻译API实现文本翻译
- 一个程序员的诗集【古诗篇】
- 用excel制作双层饼图_Excel 怎么用环形图制作双层饼图,excle饼状图图的制作
- 喝咖啡有什么好处和坏处?
- 给马云、马化腾订制旅行,这家公司想做旅游行业的“得到”
- 阿里云 Linux云服务器登陆方式(Windows远程登录工具XShell,基于ssh建立会话)
- GraphicsLab Project之基于物理的着色系统(Physical based shading)-直接光照
- Windows消息拦截技术的应用(Hook钩子)
- iOS 即时聊天 音频格式转NSData
- 你知道吗?除了 P站,还有这些站 ~~
- 一本图书的信息包括:图书编号(BookNo),书名(BookName),总册数(Total),借出数(Lend),价格(Value),利用结构体实现以下要求:
- python进阶豆瓣青梅竹_python3 Django+MySQL
- 用于三维医学图像检测的半监督学习——FocalMix: Semi-Supervised Learning for 3D Medical Image Detection