Unity3D中的Update、LateUpdate和Fixed
2017-12-31 本文已影响0人
醉杀楚天白
-
MonoBehaviour.Update 更新
当MonoBehaviour启用时,其Update在每一帧被调用。例如 让一个物体稳定转动
using UnityEngine;
using System.Collections;
public class Rotator : MonoBehaviour {
// Before rendering each frame..
void Update ()
{
// Rotate the game object that this script is attached to by 15 in the X axis,
// 30 in the Y axis and 45 in the Z axis, multiplied by deltaTime in order to make it per second
// rather than per frame.
transform.Rotate (new Vector3 (15, 30, 45) * Time.deltaTime);
}
}
-
MonoBehaviour.FixedUpdate 固定更新
当MonoBehaviour启用时,其 FixedUpdate在每一帧被调用。
处理Rigidbody时,需要用FixedUpdate代替Update。例如:给刚体加一个作用力时,你必须应用作用力在FixedUpdate里的固定帧,而不是Update中的帧(两者帧长不同)。
例如: 给刚体加力
void FixedUpdate ()
{
// Set some local float variables equal to the value of our Horizontal and Vertical Inputs
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");
// Create a Vector3 variable, and assign X and Z to feature our horizontal and vertical float variables above
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
// Add a physical force to our Player rigidbody using our 'movement' Vector3 above,
// multiplying it by 'speed' - our public player speed that appears in the inspector
rb.AddForce (movement * speed);
}
-
MonoBehaviour.LateUpdate 晚于更新
当Behaviour启用时,其LateUpdate在每一帧被调用。
例如 : 摄像机跟随玩家移动
using UnityEngine;
using System.Collections;
public class CameraController : MonoBehaviour {
// store a public reference to the Player game object, so we can refer to it's Transform
public GameObject player;
// Store a Vector3 offset from the player (a distance to place the camera from the player at all times)
private Vector3 offset;
// At the start of the game..
void Start ()
{
// Create an offset by subtracting the Camera's position from the player's position
offset = transform.position - player.transform.position;
}
// After the standard 'Update()' loop runs, and just before each frame is rendered..
void LateUpdate ()
{
// Set the position of the Camera (the game object this script is attached to)
// to the player's position, plus the offset amount
transform.position = player.transform.position + offset;
}
}