宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取

一 学习需要的基础:

1需要一定的unity基础。
2不要死记硬背,多练常用的,加深印象。
3学习目标:巩固unity知识

二 如何查看unity的API文档:

Help里Scripting Reference是API文档(经常用到):介绍各种类
Unity Manual是Manual手册:教程式手册,具备各个功能,例如Audio,UI,Animation,Navigation,Unity2D等等

三 事件函数:

如何查看所有的事件函数:
Manual-Scripting-Scripting Overview-Execution Order of Event Functions

1创建一个新场景,命名为MainScene
2创建一个游戏物体,新建脚本API01,用来测试事件方法
Start函数只执行一次,Update可以重复执行
Reset函数:初始化

四 事件函数的执行和先后顺序:

FixedUpdate:每秒调用固定次数
OnTinggerXXX和OnCollisionXXX:触发碰撞器
OnMouseXXX:输入事件
新建API09OnMouseEventFunction脚本

OnMouseDown:鼠标按下会执行一次OnMouseUp:鼠标抬起会执行一次OnMouseDrag:鼠标拖拽会执行OnMouseEnter:移上会执行一次OnMouseExit:移出会执行一次OnMouseOver:每帧都会执行一次

前三个和鼠标抬不抬起无关 后三个和鼠标抬起拖拽有关
OnMouseUpAsButton:同一个物体才会触发
OnDestory:销毁

五 Time :Scripting API里搜素Time

captureFramerate:设置帧的速率,可以屏幕截图
deltaTime:代表当前帧所占用的时间,和实际的组件有关系

fixeddeltaTime:固定的每一帧所占用的时间。可以通过Edit-Project Settings-Time-Fixed Timestep查看
smoothdeltaTime:平缓的变化,和deltaTime有关系
realtimeSinceStartup:游戏从开始到现在所占用的时间,暂停的时候会一直增加,不受暂停的影响。
timeSinceLeveLoad:以一个场景到另一个场景为单位
fixedTime/Time:以游戏从开始和结束为单位
frameCount:从游戏到暂停运行的帧数
timeScale:对所有的DeltaTime可以实现加速,减速和暂停播放
例如Time.timeScale=3f;加速
Edit-Project Settings-Time
新建API02Time脚本,并运行

realTimeSinceStartup的使用
测试性能快慢:例如乘法和加法

运行结果可得乘法比加法性能慢

六 游戏物体

1)创建游戏物体的三种方法:
Instantiate 实例化特效,游戏角色等等
CreatePrimitive 创建一些基本图形,例如Plane Cube等等
创建脚本API03,编辑代码并运行

通过代码给游戏物体添加组件

禁用和启用一个游戏物体
activeSelf:表示自身是否处于激活状态
如果父物体被禁用,子物体如果没有被禁用,则activeSelf为true
activeInHierarchy(常用):表示某个物体是否处于激活状态
父物体如果被禁用,子物体也无法运行
Tag(标签):区分场景中的某个游戏物体

2)GameObject,Component,Object
关系:

1>UnityEngine下Object拥有的静态方法:
Destroy销毁 既可以销毁组件,也可以销毁游戏物体。还可以设置时间。
Destroylmmediate立即销毁(不建议用)
DontDestroyOnLoad 切换场景时也会存在,用来设置共享的游戏物体
FindObjectOfType根据组件类型查找组件,只找第一个
FindObjectsOfType 所有的
Instantiate实例化
2>GameObject独有的静态方法:
CreatePremitive
Find:根据名字查找游戏物体,比较耗费性能,尽量不要在Update里查找
FindGameObjectsWithTag:根据标签查找场景中的所有的带有这种标签的游戏物体
FindWithTag:根据标签查找场景中的第一个的带有这种标签的游戏物体
3>GameObject的公共方法:
AddComponent SetActivve CompareTag
Message:
BroadcasMessage广播消息,可以减少游戏物体之间的耦合性
新建API04Message

SendMessage 会针对某一个物体身上的所有的脚本方法会被调用

SendMessageUpwards:针对当前物体以及其所有的父物体

GetComponent 得到游戏物体的第一个组件
GetComponens 得到游戏物体的所有组件
GetComponentinChildren 当前的游戏物体以及子物体的第一个组件
GetComponentsinChildren 当前的游戏物体以及子物体的所有组件
GetComponeninParent 当前的游戏物体以及所有的父物体的第一个组件
GetComponensinParent 当前的游戏物体以及所有的父物体的所有组件

4>MonoBehaviour:

变量:runEditMode-ExecuteInEditMode实现在编辑模式下也可以运行的功能
Invoke调用某个方法 可以设置调用时间(定时器)
InvokeRepeating重复调用某个方法
CancelInvoke取消调用某个方法 只会取消当前脚本的方法
新建API06MonoBehaviour脚本并运行

注意:Debug可以在任意地方使用,print只能在MonoBehaviour下使用,因为其属于MonoBehaviour的静态方法
IsInvoking判断某个方法是否被调用
新建API07Invoke脚本