【问题标题】:UnityException: get_time is not allowed to be called from MonoBehaviour constructorUnityException:不允许从 MonoBehaviour 构造函数调用 get_time
【发布时间】:2023-01-25 03:55:27
【问题描述】:

我正在尝试制作一种防止玩家发送垃圾邮件的方法空间钥匙。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerControllerX : MonoBehaviour
{
    public GameObject dogPrefab;
    private float setTime = 2.0f;
    private float timer = Time.time;

    // Update is called once per frame
    void Update()
    {
        timer += Time.deltaTime;
        if (timer >= setTime)
        {
            SpawnDog();
        }
    }
    void SpawnDog()
    {
        // On spacebar press, send dog
        if (Input.GetKeyDown(KeyCode.Space))
        {
            Instantiate(dogPrefab, transform.position, dogPrefab.transform.rotation);
            timer = 0;
        }
    }

}

这是来自 Unity 的错误声明:我认为这不是逻辑错误

UnityException:get_time 不允许从 MonoBehaviour 构造函数(或实例字段初始值设定项)中调用,而是在 Awake 或 Start 中调用它。从游戏对象“Player”上的 MonoBehaviour“PlayerControllerX”调用。

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    就像说你不能在声明中设置private float timer = Time.time;。 你应该做这样的事情

    private float timer = 0;
    
    void Start(){
    timer = Time.time;
    }
    

    【讨论】:

      【解决方案2】:

      任何人都可以对此做出回应并显示完整的代码块吗?

      我也为此苦苦挣扎并添加了 Start 方法,但我现在的问题是使用计时器的延迟间隔。

      在我看来,如果我将 time = 设置为 2.0;或 25.0f 或 15.0f 在我按下空格键生成另一只狗的延迟方面确实没有区别。

      以下是我编写代码的方式:

      enter image description here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-21
        • 1970-01-01
        • 1970-01-01
        • 2011-09-12
        • 2019-02-21
        • 2019-01-24
        • 1970-01-01
        • 2020-07-24
        相关资源
        最近更新 更多