Unity之Update与FixedUpdate区别

下面这段代码演示游戏暂停

using UnityEngine;
using System.Collections;

public class GamePauseTest : MonoBehaviour
{
    public float moveSpeed = 2.0f;

    void Update ()
    {
        //move
        transform.Translate (new Vector3 (0, 0, moveSpeed * Time.deltaTime));
    }

    void OnGUI ()
    {

        if (GUI.Button (new Rect (140, 0, 100, 50), "暂停")) {
            Time.timeScale = 0;
        }

        if (GUI.Button (new Rect (280, 0, 100, 50), "继续")) {
            Time.timeScale = 1;
        }
    }
}

GamePauseTest

注意事项

示例中的 速度*Time.deltaTime ,目的是保证游戏运行在 帧数不同的情况下角色移动速度都一样,因为此时角色是按时间移动与帧数无关。

Update和FixedUpdate区别

FPS=2的情况

FPS=60的情况

Update和FPS有关

从上面的两幅图可以看了,当FPS为2时,update打印的次数特别少,而当FPS改为60时,update打印的次数就明显提高了很多

总结

update跟当前平台的帧数有关,而FixedUpdate是真实时间,所以处理物理逻辑的时候要把代码放在FixedUpdate而不是Update.

Update

Update是在每次渲染新的一帧的时候才会调用,也就是说,这个函数的更新频率和设备的性能有关以及被渲染的物体(可以认为是三角形的数量)。在性能好的机器上可能fps 30,差的可能小些。这会导致同一个游戏在不同的机器上效果不一致,有的快有的慢。因为Update的执行间隔不一样了。

FixedUpdate

FixedUpdate是在固定的时间间隔执行,不受游戏帧率的影响。Tick:在处理Rigidbody的时候最好用FixedUpdate。

修改FixedUpdaet

FixedUpdate的时间间隔可以在项目设置中更改,点击 Edit - Project Setting - time  找到 Fixed timestep,就可以修改了。

点击查看原文

原文地址:https://www.cnblogs.com/shirln/p/8471909.html

时间: 2024-09-29 02:58:41

Unity之Update与FixedUpdate区别的相关文章

Unity中Update,FixedUpdate,LateUpdate的区别

void FixedUpdate () 固定更新 void Update () 更新 void LateUpdate() 晚于更新 FixedUpdate () 和 Update () 同:当MonoBehaviour启用时,其在每一帧被调用.都是用来更新的 异:Update()每一帧的时间不固定,即第一帧与第二帧的时间t1和第三帧与第四帧的时间t2不一定相同.FixedUpdate()每帧与每帧之间相差的时间是固定的. Update受当前渲染的物体影响,这与当前场景中正在被渲染的物体有关(比如

Unity3D中Update()与FixedUpdate()的区别

Unity3D中Update()与FixedUpdate()的区别是什么呢?从字面上理解,它们都是在更新时会被调用,并且会循环的调用.但是Update会在每次渲染新的一帧时,被调用.而FixedUpdate会在每个固定的时间间隔被调用,那么要是Update 和FixedUpdate的时间间隔一样,是不是就一样呢?答案是不一定,因为Update受当前渲染的物体,更确切的说是三角形的数量影响,有时快有时慢,帧率会变化,update被调用的时间间隔就发生变化.但是FixedUpdate则不受帧率的变化

[Unity-7] Update和FixedUpdate

1.Update和FixedUpdate是Unity里面提供的两个与帧相关的函数接口. Update():这个函数里面的内容每一帧都会被执行一次,这个函数有一个特点,那就是执行的频率等于帧率.而这个帧率取决于手机的性能,手机性能越高帧率越高,也就是说如果你在Update里面写着向前移动1,那么在高性能手机(假设帧率为100)上,每秒会向前移动100:而在低性能手机(假设帧率为50)上,每秒会向前移动50.这就引发了不同手机上效果不一样的现象. FixedUpdate():这个函数从名字上就可以看

Update() 和 FixedUpdate()

http://www.cnblogs.com/guanjie20/p/3549392.html Update会在每次渲 染新的一帧时,被调用.而FixedUpdate会在每个固定的时间间隔被调用, 那么要是Update 和FixedUpdate的时间间隔一样,是不是就一样呢?答案是不一定,因为Update受当前渲染的物体,更确切的说是三角形的数量影响,有时快有时 慢,帧率会变化,update被调用的时间间隔就发生变化.但是 FixedUpdate则不受帧率的变化,它是以固定的时间间隔来被调用,那

mysql 5.5与5.6 timestamp 字段 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP的区别

http://www.111cn.net/database/mysql/55392.htm 本文章来给各位同学介绍关于mysql 5.5与5.6 timestamp 字段 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP的区别,希望此教程对各位有帮助. mysql5.6数据库:  代码如下 复制代码 [BIGHD]([email protected]) [cm]> SELECT version(); +------------+ | ve

Unity3D的update和FixedUpdate

Update() 和 FixedUpdate()是unity3d的循环执行函数: 区别是循环周期不同: Update()是渲染每一帧,执行一次. FixedUpdate()是固定时间间隔执行一次. LateUpdate()是所有Update()执行完才执行(多脚本加载). 这里补充说明一下程序函数的执行顺序请参考以下文章: http://www.cnblogs.com/ysdyaoguai/p/3746828.html?utm_source=tuicool&utm_medium=referral

oracle for update和for update nowait(for update wait)的区别

1.for update 和 for update nowait 的区别: 1.oracle 中执行select 操作读取数据不会有任何限制,当另外一个进程在修改表中的数据,但是并没有commit,所以select的结果为当前时刻表中的记录. 2.加入for update后会该表符合条件的数据进行加锁,注意的是这里只是锁定了符合条件的行,其他行还是可以被其他进程操作.其他进程若是想修改(update)当前行就会出现阻塞.就会一直等待到当前进程commit后才会被执行. 3.for update

oracle for update和for update nowait的区别

1.for update 和 for update nowait 的区别: 首先一点,如果只是select 的话,Oracle是不会加任何锁的,也就是Oracle对 select 读到的数据不会有任何限制,虽然这时候有可能另外一个进程正在修改表中的数据,并且修改的结果可能影响到你目前select语句的结果,但是因为没有锁,所以select结果为当前时刻表中记录的状态. 如果加入了for update, 则Oracle一旦发现(符合查询条件的)这批数据正在被修改,则不会发出该select语句查询,

Update LateUpdae FixedUpdate

这个问题本来是在研究动画系统时遇到的:OnAnimatorMove在Animator.Update()调用,那这个Animator.Update是什么时候调用的呢. Animator Component Manual: Controller:如果不赋值就不会有性能消耗,所以如果是动态赋值,初始时就留空吧 Avatar:如果是类人模型,就必须赋值.这里不得不提暗黑,它并不使用类人选项,但却大量使用类人的功能,比如赋值Avatar,动画重定向等. Apply Root Motion:Should w