Unity3D中的Update、LateUpdate和FixedUpdate的意义

  1. 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);
    }
}
  1. 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);
    }
  1. 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;
   }
}

你可能感兴趣的:(Unity3D中的Update、LateUpdate和FixedUpdate的意义)