常用API

1.实例化游戏物体

GameObject.Instantiate(Object, Vector3, Quaternion);
参数说明:
Object:用于实例化的预制体;
Vector3:实例化后生成的物体所在的位置;
Quaternion[四元数]:实例化后生成的物体的旋转状态;
Quaternion.identity:无旋转;

1.1.构造随机位置

位置是用 Vector3 类型进行表示的。
X,Y,Z 三个值确定了物体在三维世界中的位置。
Random.Range(min, max):生成随机数。
在 min 和 max 直接随机生成一个随机数。
演示:按下键盘的一个键,就在随机位置实例化一个物体。
 

2.销毁游戏物体

GameObject.Destroy(Object, float);定时销毁某个游戏物体。
参数说明:
Object:要销毁的游戏物体;
float:时间,多少秒后销毁;

3.Invoke 函数

Invoke(string,float):多少秒后执行某个函数[只会调用一次]。
参数说明:
String:要执行的函数的名称;
Float:秒数,倒计时的时间;
InvokeRepeating(string,float,float):多少秒[第二个参数]后执行某
个函数,并且以后每隔多少秒[第三个参数]都会执行该函数一次[重复调用 N 次]。
参数说明:
String:要执行的函数的名称;
Float:秒数,准备时间,预热时间;
Float:秒数,重复调用的间隔时间;
CancelInvoke():取消这个脚本中所有的 Invoke 调用。

3.1.Invoke 函数的家在哪儿?

Class 类可以理解成是一个“家”,各种各样的函数(方法),字段,属性可以理解成是这个“家”的家庭成员。
那么,这三个 Invoke 相关的函数,他们的家在哪儿?
回答:MonoBehaviour 类。
我们先阶段写的脚本,都是默认继承“MonoBehaviour”类的,我们自己写的脚本类,都是这个“MonoBehaviour”类的子类,所以我们可以直接通过写方法名的形式,就可以调用父类中的方法。 

4.SendMessage 消息发送

gameObject.SendMessage(string):通知这个游戏物体身上的脚本文件中的“指定方法”执行。
参数说明:
String:方法名,要执行的方法的名称;

5.协同程序简介

协同程序,简称“协程”。在脚本运行过程中,需要额外的执行一些其他的代码,这个时候就可以将“其他的代码”以协程的形式来运行。
类似于开启了一个线程,但是协程不是线程。

5.1协同程序的使用前提

只有在继承了“MonoBehaviour”这个类的子类中才能使用相关的协程方法。

5.2.协同程序语法格式

1.定义协同程序

协同程序就是一个“代码片段”,往往我们需要将这个代码片段封装成一个方法,或者称之为函数。
IEnumerator Task3()
{
  yield return new WaitForSeconds (2);
  Debug.Log ("任务 3");
}
参数说明:
IEnumerator:协同程序的返回值类型;
yield return:协同程序返回 xxxxx;
new WaitForSeconds (秒数):实例化一个对象,等待多少秒后继续执行。
这个 Task3()的作用就是等待两秒后,继续执行任务 3.

2.开启协同程序

StartCoroutine(“协同程序方法名”);
这个 StartCoroutine 有三种重载形式,目前先只介绍这一种。

3.停止协同程序

StopCoroutine(“协同程序方法名”);
这个 StopCoroutine 也有三种重载形式,目前先只介绍这一种。

6.脚本生命周期

脚本作为我们游戏的“灵魂”,往往不单独存在,而是经常作为组件的形式挂载到特定的游戏物体身上,比如:游戏主角,敌人,Boss,子弹,建筑物......
脚本的生命周期,也就是所挂载到的游戏物体的生命周期。
脚本的生命周期,就是挂载到的游戏物体“从出生到死亡”,所经历的一些事件。
这些生命周期事件,是一些特定的方法,且是由 Unity 引擎事先定义好的,在游戏的运行过程中,由引擎自动调用。
这些生命周期事件,全部定义的 MonoBehaviour 这个类中。也就意味着只有继承自这个类的脚本,才有这些生命周期事件。

6.1.常用生命周期事件

通过一个小的 Demo 演示,来讲解生命周期事件:
按下键盘上的某个键,然后在场景中实例化一个 Cube 物体,这个 Cube 物体身上挂载一个脚本,用于测试它的生命周期事件。
1.Awake() ※:唤醒事件,只执行一次。
2.OnEnable():启用事件,只执行一次。当脚本组件被启用的时候执行一次。
3.Start() ※:开始事件,只执行一次。
4.FixedUpdate() ※:固定更新事件,执行 N 次,0.02 秒执行一次。所有物理组件相关的更新都在这个事件中处理。
5.Update() ※:更新事件,执行 N 次,每帧执行一次。
6.LateUpdate():稍后更新事件,执行 N 次,在 Update 事件执行完毕后再执行。
7.OnGUI():GUI 渲染事件,执行 N 次,执行的次数是 Update 事件的两倍。
8.OnDisable():禁用事件,执行一次。在 OnDestroy 事件前执行。或者当该脚本组件被“禁用”后,也会触发该事件。
9.OnDestroy() ※:销毁事件,执行一次。当脚本所挂载的游戏物体被销毁时执行。
注意事项
生命周期事件,全部是由系统定义好的,且系统会自动调用。
系统调用这些事件的顺序,和我们代码里面的书写顺序无关。

6.2.替换代码编辑器

将 Unity 自带的 MonoDevelop 替换成微软的 VS 2013 编辑器。
操作步骤:
Edit-->Preferences...-->Unity Preferences 面板-->External Tools-->External Script Editor 位置进行下拉选择设置。

7、工具类

7.1.Screen 屏幕类

这个类中包含屏幕相关的数据信息。
常用属性
Screen.width:静态只读属性,屏幕的宽度。
Screen.height:静态只读属性,屏幕的高度。
备注:在 Unity 的开发模式下,这两个值取的是 Game 窗口的宽度和高度。
在项目编译打包后,再运行,就是具体的设备的屏幕的宽度和高度。

7.2.Time 时间类

这个类中包含时间相关的数据信息。
类中常用属性
Time.time:静态只读属性,游戏时间。从游戏开始到现在所经过的秒数。
Time.deltaTime:静态只读属性,时间增量。渲染完上一帧画面所消耗的时间。[可以用于实现倒计时效果]
Time.timeScale:静态属性,时间缩放。[可以用于暂停游戏]
当值为 1 时,游戏是正常状态;为 0 时,游戏是暂停状态;为 0.5 时,游戏是处于慢放 0.5 倍的状态。

7.3.Mathf 数学类

这个类(其实 Mathf 是结构体类型)中包含了各种各样的数学运算相关的函数。
常用函数
Mathf.Abs() 取绝对值
Mathf.Max() 取最大值
Mathf.Min() 取最小值
Mathf.Round() 四舍五入
Mathf.Lerp(float a,float b,float t) :插值运算
  基于浮点数 t 返回 a 到 b 之间的插值,t 限制在 0~1 之间。
  当 t = 0 返回 a,当 t = 1 返回 b。当 t = 0.5 返回 a 和 b 的平均值。
  演示:一个数从 0,插值到 10。
  备注:Lerp()这个函数,在很多类中都存在,插值运算的目的基本都是为了“平滑过渡”。
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2022-09-12 23:39  石元  阅读(21)  评论(0编辑  收藏  举报