Time
提供从Unity获取时间信息的接口。
Time.deltaTime :完成上一帧所用的时间(只读)。增量时间实时变动,保证帧率变动时,变换稳定。
void Update()
{
transform.Rotate(0,0,speed*Time.deltaTime);
}
Time.fixedTime :最近一次FixedUpdate已启动的时间。自游戏启动以来的时间。
Time.time : 应用程序已运行的时间(只读)。受时间缩放影像。
Time.timeScale :时间流逝的标度。可用于慢动作效果。
Time.unscaledTime:独立于timeScale的时间(只读)。自游戏启动以来的时间。
Time.realtimeSinceStartup:游戏开始以来的实际时间(只读)。
Prefab
预制体——一种资源类型,存储在项目视图中的一种可复用的游戏对象。能够放到多个场景,也能在同一个场景放置多个。对prefab进行修改时,已放置在场景的全部prefab也被修改。
创建prefab
在Assets文件夹下创建Prefab文件夹,将场景中已创建好的游戏对象拖入该文件夹。
断开物体与prefab的联系
选中游戏对象,右键依次选择Prefab -> Unpack(断开当前层级和prefab的联系)/Unpack Completely(断开当前层和所有子层和prefab的联系)。
Input
访问输入系统的接口
Input.GetKeyDown(name):当按下由name标识的键的帧期间返回true。(按下的那一帧)
Input.GetKeyUp(name):释放name标识的键的帧期间返回true。(释放的那一帧)
void Update()
{
if(Input.GetKeyDown(KeyCode_Space))
{
Debug.Log("按下空格");
}
if(Input.GetKeyUp(KeyCode_Space))
{
Debug.Log("释放空格");
}
}
Input.GetKey(Key):在用户按下name标识的键返回true。(报告指点键的状态,持续按住返回true)
Input.GetMouseButton(mouseButton):返回是否按下指定鼠标按钮。0:左键;1:右键;2:中键。
Input.GetMouseButtonDown(mouseButton):用户按下鼠标按钮的帧期间。
Input.GetMouseButtonUp(mouseButton):用户释放鼠标按钮的帧期间。
void Update()
{
if(Input.GetMouseButton(0))
{
Debug.Log("按住鼠标左键");
}
if(Input.GetMouseButtonDown(0))
{
Debug.Log("按下鼠标左键");
}
if(Input.GetMouseButtonUp(0))
{
Debug.Log("释放鼠标左键");
}
}
虚拟轴
默认情况下,创建的每个项目都创建了若干输入轴。通过这些轴可以立即在项目中使用键盘、鼠标和游戏杆输入。
查看虚拟轴
Edit -> Project Settings -> Input Manager
获取/使用虚拟轴
Input.GetAxis(axisName):返回由axisName标识的虚拟轴的值(浮点型 float)。该值的范围在 -1~1 之间,-1表示左,1表示右,0为中间。
Input.GetAxisRaw(axisName):同GetAxis,未应用平滑过渡(可自己实现),返回类型为float,但是返回的值只有-1,0和1。
public Rigidbody rigid;
void FixedUpdate()
{
Movement();
}
private void Movement()
{
float horizontalMove = Input.GetAxis("Horizontal");
//float horizontalMove = Input.GetAxisRaw("Horizontal");
rigid.velocity = new Vector3(horizontalmove*speed,rigid.velocity.y,rigid.velocity.z);
}