欢迎使用CSDN-markdown编辑器

来源:互联网 发布:下载源码的网站 编辑:程序博客网 时间:2024/04/30 14:19

UnityEngine.Time

概述

  • Time类中全部都是静态成员
  • Time.timeScale是游戏时间的缩放比例,可读写,这个系数会影响部分api返回的值.可以在ProjectSetting=>Time=>TimeScale中设置
  • API具体含义见表格(含义大多从UnityManual以及文档中取得)
受缩放影响的API 对应不受影响的API 含义 读写性 Time.deltaTime Time. unscaledDeltaTime 上一帧开始到当前帧开始所经历的时间,可以理解为每帧时间间隔 只读 Time.time Time.unscaledTime unity从点击播放到当前所经历的总时间,是对应deltaTime的积分 Time.smoothDeltaTime – 平滑帧时间,参数会根据前几帧的deltaTime来返回一个相差不是很大的值,以防止卡帧带来的deltaTime起伏过大 只读 – Time.timeSinceLevelLoad 从场景加载完成开始计时的时间 只读 – Time.fixedDeltaTime fixedupdate回调方法的调用间隔,可以动态设置或者在工程设置中设置 可读写 – Time.maximumDeltaTime 最大帧时间间隔,如果实际的帧间隔大于这个时间,那物理检测会减少执行来平衡帧刷新率 可读写 – Time.maximumParticleDeltaTime 同上,只是被减少渲染和检测是粒子系统 可读写 – Time.realTimeSinceStartup 从游戏开始运行到现在的实际运行时间,不收时间缩放的影响,并且,哪怕这个程序不能在后台运行,但处于后台状态时仍旧会计时 只读 – Time.frameCount 已经刷新的帧数 只读 – Time.rendererFrameCount 每帧不一定只渲染一次(overDraw) 只读

使用

  • 鼠标双击事件自定义:

    思路:定义一个bool值,表示当前是否处于玩家第一次点击完成过程中
    间隔的判定:可以使用一个自定义变量来对Time.unscaleDeltaTime累加进行计时,也可以使用Time.unsacelTime的差值来表示
    玩家第一次点击让计数器开始计时,并且把bool值置成true.如果bool值是true就进行下一步检测,等待玩家第二次点击,如果点击成功则双击触发.如果规定时间内没有玩家点击把计数器状态重置,bool置成false.

  • 平滑移动:

    思路: 给定变量 Vector3 direction ; float speed ;
    位移1 = direction * speed * Time.deltaTime1 ;
    位移2 = direction * speed*Time.deltaTIme2;
    移动过程中其实就是每帧的位移相加.可以看出,正好是 位移= direction*speed * 时间积分.

  • 自定义添加帧事件

  int keyNumber=N;//动画开始播放时执行协程,并且假设需要在动画的第N帧执行某个方法,从1开始  int onAnimationClipPlay = Time.frameCount;   while((Time.frameCount - onAnimationClipPlay )!=keyNumber) {yield return null;}  // do something

– Time类是Unity开发的基础部分.个人觉得没有太多可以深入挖掘的地方.
– 以上仅代表个人经验和观点,如有错误欢迎指正