应用程序编程接口(Unity提供的方法、类,以便于去实现某些功能)。
新建工程—Help—Unity
Manual和Scripting Reference(没有的话官网重新下载补充安装Documentation模块)
FixedUpdate:每秒固定调用次数(任何情况下不擅自更改)
Update/LateUpdate:根据游戏运行实际情况决定每秒调用次数
【Update和LateUpdate调用次数相同,因为在同一帧里依次调用】
Gizemos:在Sence窗口辅助显示线条、线框等
OnApplicationPause:在项目运行暂停时调用
【禁用游戏物体时运行程序,Disable调用,且Update、LateUpdate和FixedUpdate不再调用,再次启用物体时先调用Enable,然后恢复Update、LateUpdate和FixedUpdate的调用】
【可以将与运动有关的指令放入FixedUpdate函数中以保证运动的平滑而不受电脑性能影响。】
Time.captureFramerate:通过设置Framerate(帧速率)在当前帧进行屏幕截图
Time.deltaTime:代表当前帧所占用的时间(大概为1/60左右)
Time.fixedDeltaTime:代表规定中当前帧所占用时间(固定为1/60)
Time.fixedTime:从游戏开始运行到现在所用时间
Time.frameCount:从游戏开始运行到现在一共运行的帧数
Time.timeScale:时间比例,用来使游戏暂停或加速播放
(查看帧数:Edit—Project Settings—Time)
Time.timeSinceLevelLoad:以场景为单位进行计时
Time.realtimeSinceStartup:
从游戏开始运行到现在一共运行的时间(当游戏暂停或后台运行时仍然计时)
Time.smoothDeltaTime:平滑运动时间(将变化趋近于平缓化)
cube.Translate(Vector3.forward* Time.deltaTime * 倍数);
//每秒运动1米
Time.timeScale = 3f;
//对所有运动物体的速度产生影响
物体在原有运动速度基础上* Time.timeScale的数值=现有速度
测试两个方法Method1()和Method2()谁更耗费性能:
public int runCount = 10000; //定义执行次数
void Start () {
float time1 = Time.realtimeSinceStartup; //得到开始时间
for (int i = 0; i < runCount; i++)
{
Method1();
}
float time2 = Time.realtimeSinceStartup; //得到结束时间
Debug.Log(time2 - time1);
//同理,比较出time2- time1和time4 - time3的大小
float time3 = Time.realtimeSinceStartup;
for (int i = 0; i< runCount; i++)
{
Method2();
}
float time4 = Time.realtimeSinceStartup;
Debug.Log(time4- time3);
}
【举例:测试加法和乘法谁更耗费性能,可以设置没有内容的Method0()作为空白对照】
1. 构造方法,一般用来创建空物体
new GameObject();//可以在括号里为新建物体命名
如
new GameObject(“cube”); //创建一个名为cube的游戏物体
“cube”是该游戏物体的参数
如果想对该物体进行后续操作,得到该物体的返回值:
GameObject go = new GameObject ("Cube");
2. (静态方法)根据prefab进行实例化[需要有0bject可以传入] (克隆)
public GameObject prefab; //提前定义 Prefab
GameObject.Instantiate (prefab); //实例化提前定义好的Prefab
前提是必须有一个真实存在的Prefab,可以是灯光、特效、物体等等
可以根据Prefab或者另外一个游戏物体克隆
3. 创建原始图形(需要指定类型)
GameObject.CreatePrimitive (PrimitiveType.Plane);
//Plane是类型
GameObject go = GameObject.CreatePrimitiveType.Plane;
//创建一个可返回的实例化物体
go. AddComponent <Rigidbody>( );
//得到该物体并添加内置组件(钢体)
go. AddComponent <脚本>( );
//也可以添加外置组件如提前写好的脚体
Transform:定位,每个游戏物体都有,且只有一个,且不能被移除
Tag:标签,区分场景中的某个游戏物体
activeInHierarchy:表示物体是否处于激活状态
activeSelf:表示自身是否处于激活状态
activeInHierarchy和activeSelf的区别:
假设有一个父物体Cube下有一个子物体Object
当禁用父物体Cube时,activeInHierarchy的属性为“false”
即Cube和Object的activeInHierarchy属性都为false
但因为并没有直接禁用Object(虽然Object和Cube都为未激活)
所以Object的activeSelf属性为true,Cube的activeSelf属性为false
如何禁用一个游戏物体Cube:
GameObject go = GameObject.CreatePrimitive (PrimitiveType.Cube);
//创建Cube
go. SetActive (false); //禁用
启动Cube: go.SetActive (true);
输出Cube的标签: Debug.Log(go.tag);
当一个游戏物体处于未激活状态时,仍可以获取到该物体的各种属性,只是该物体不在游戏场景中显示并且不运行Update方法。占用内存但不耗费性能。