Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(197评价)
价格: 4431.00元
通过变量赋值方式修改 Time.timeScale 时出现了一个问题
葱白发起了问答2018-02-14
8
回复
1331
浏览

通过变量赋值修改了 Time.timeScale 时出现了一个问题,情况如下

具体书写的代码如下:

public class FixedDeltaTime : MonoBehaviour {

    public GameObject go;
    public float TimeS = 1f;
    [SerializeField]
    private float speed = 1f;
    private Transform re;

    // Use this for initialization
    void Start () {
        re = go.GetComponent<Transform> ();
    }
    

    void FixedUpdate () {
        Time.timeScale = TimeS;
        re.Translate (Vector3.forward * Time.fixedDeltaTime * speed);
    }
}

将Time.timeScale通过 TimeS 变量赋值的方式修改为 其他正数都没有问题。但是将 Time.tiimeScale设置为0后,再修改为其他的正数,此时物体不再移动了。

查看了TimeManager后发现,其中的timeScale的值并没有被按照我对 TimeS 变量的修改而修改。

而当修改了 TimeManager 中的 timeScale 的值后,无论修改为什么值,TimeManager 中的这个值会完成之前没有执行成功的 变量赋值。

 

想问一下会是什么问题呢?

所有回复
  • 老师_Bathur 2018-02-14

    Time.timeScale是一个全局通用的值,而且直接修改生效不会有问题,不清楚您的逻辑,看看是不是多处修改了,一个简单的赋值一般没问题的

    • 葱白 2018-02-14

      抱歉老师 打扰您的时间了,这确实可能只是个小问题。 如果您有空的话也许可以看一下附件的视频。
      根据视频来说,会不会 通过变量修改 timeScale的 值为 0 ,有特别含义呢?不知道会不会是这样。。。

      (0) 回复
    • 老师_Bathur 2018-02-14

      回复 @ 葱白: 好的~视频我看了~确实很奇特哈~老师抽空会按照你说的来试一试~那么其实有的时候Editor模式下值得反馈是不准的~也就是说~指不定TimeManager面板还没有反应过来?您从0修改回去之后物体的反应如何?还可以尝试打印timeScale的值看看哦~

      (0) 回复
    • 葱白 2018-02-14

      回复 @ 老师_Bathur: 嗯 我试试 ~

      (0) 回复
    • 葱白 2018-02-14

      老师,我试了多次,发现只有在 FixedUpdate() 方法内才会出现这种情况,无论是 乘以Time.fixedDeltaTime 或者 只是不与之相乘。 都有这种情况。
      但是在 Update() 中就没有这种情况。

      而且貌似 在FixedUpdate中时,如果有多个值控制 Time.timeScale 这个值,只要其中一个值没有为零,另一个值 为 0 时,物体的时间虽然会静止,但是还是可以随着 变量的 0 值被调回来而继续移动的。

      挺奇特的 ~ (๑•̀ㅂ•́)و✧

      (0) 回复
    • 老师_Bathur 2018-02-14

      回复 @ 葱白: timeScale按照官方的说法只控制一部分函数的调用与否,并不是真正的时间停止哦~

      (0) 回复
    • 葱白 2018-02-16

      回复 @ 老师_Bathur: 嗯 谢谢老师 。 新年快乐~

      (0) 回复
    • 老师_Bathur 2018-02-16

      回复 @ 葱白: 新年快乐~

      (0) 回复
    还有2条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!