一、事件函数 和事件函数的执行时机
二、Time类中的静态变量
captureFramerate
通过这个变量来设置帧的速率,通过设置帧的速率可以进行屏幕截图,让屏幕截图在当前帧可以完成。
*deltaTime
代表当前帧所占用的时间。我们按一秒运行60帧来算,那一个deltaTime的时间差不多是60分之一秒左右(根据硬件环境不同,可能会有出入)。
fixedDeltaTime
固定的时间,根据帧数设定而定。
frameCount
从游戏开始一直到现在一共运行了多少帧。
timeScale
默认是1,可以自己设置,调整比例可以实现时间的加速播放。
imeSinceLevelLoad
场景加载完成之后所占用的时间。
unscaleTime
游戏从一开始运行到现在的时间。
timeScale
经常用作游戏的暂停,或者加速,减速。
realtimeSinceStartup
用来检测一个算法的性能,用于性能优化。
三、Time.deltaTime和Time.realtimeSinceStartup的使用
Time.deltaTime的使用 – 常用于控制物体的移动
控制一个物体的移动
public Transform cube;
cube.Translate(Vector3.forward);
– cube物体会移动很快:调用一次移动一米,每秒调用很多次
-> cube.Translate(Vector3.forward * 3 * Time.deltaTime); // 速度*当前帧所用时间=当前帧运行距离:3m/s
Time.timeScale = 1f; // 设置timeScale
–> Time.deltaTime会乘以timeScale
timeScale=0.5f; 进行慢动作回放/ timeScale=2f; 两倍播放速度等等
若timeScale=0; cube就不会移动了,常用timeScale=0来暂停游戏,前提是所有物体的控制都用了deltaTime
Time.realtimeSinceStartup的使用 – 常用于性能测试
四、创建游戏物体的三种方法
创建物体的3种方法:
方法 一
GameObject go= new GameObject("Cube1")
方法二
1.根据prefab
2.根据另外一个游戏物体
GameObject.Instantiate(prefab);
方法三
GameObject.CreatePrimitive(PrimitiveType.Plane);
GameObject.CreatePrimitive(PrimitiveType.Capsule);
五、如何给游戏物体通过代码添加组件
AddComponent:添加组件,可以添加系统组件或者自定义的脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class API03GameObject : MonoBehaviour {
void Start () {
GameObject go = new GameObject("Cube");
go.AddComponent<Rigidbody>();//添加系统组件
go.AddComponent<API01EventFunction>();//添加自定义脚本
}
}
六、禁用和启用游戏物体
activeSelf:自身的激活状态
activeInHierarchy:在Hierarchy的激活状态
SetActive(bool):设置激活状态
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class API03GameObject : MonoBehaviour {
void Start () {
GameObject go = new GameObject("Cube");
Debug.Log(go.activeInHierarchy);
go.SetActive(false);
Debug.Log(go.activeInHierarchy);
}
七、GameObject、Component和Object的千丝万缕的关系
关系图
继承关系
禁用关系
GameObjectr :开启/禁用通过SetActive
Component : 开启/禁用通过enabled
GameObject的静态方法:
CreatePrimitive
Find – 对全局进行遍历查找;耗费性能,尽量不要在 Update中调用,少在Start中调用
GameObject gameObject = GameObject.Find(“Main Camera”);
gameObject.SetActive(false);
FindGameObjectWithTag – 返回游戏物体的数组;在标签范围内进行查找 – 较快
GameObject[] gameObjects = GameObject.FindGameObjectsWithTag(“Main Camera”);
FindWithTag – 返回查找到的第一个符合条件的游戏物体
八、游戏物体间消息的发送和接收
BroadcastMessage()向所有子物体包括自身广播消息。
SendMessage()向自身发送消息。
SendMessageUpwards()向所有父物体包括自身广播消息。