-1
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class VictoryCountdown : MonoBehaviour
{
    public float victoryCountdown = 300.0f;
    public Text startText;


    void Update()
    {
        victoryCountdown -= Time.deltaTime;
        startText.text = "Survive until dawn!: " + (victoryCountdown).ToString("0");

    }
}

/////////// 2nd Script below ///////////////////

using UnityEngine;

public class VictoryManager : MonoBehaviour
{
    public VictoryCountdown victoryCountdown;


    Animator anim;


    void Awake()
    {
        anim = GetComponent<Animator>();
    }


    void Update()
    {
        if (victoryCountdown <= 0)
        {
            anim.SetTrigger("Victory");
        }
    }
}

你好,我是初学者,所以这可能是一个明显的错误。我需要创建一个倒数计时器来结束游戏。我相信我一切正常,但在最后一刻遇到了这个问题。

第一个脚本创建一个计时器,然后倒计时到 0。第二个脚本触发胜利屏幕动画。Unity 正在返回错误:

运算符<=' cannot be applied to operands of typeVictoryCountdown' 和 `int

我取得了一些进展,但遇到了这个障碍,希望更有经验的人能告诉我我做错了什么。

4

2 回答 2

4

您有一个有问题的命名约定。此外,您正在尝试将
VictoryCountDown 对象与 int 进行比较,这是不可能的。

您可以像这样轻松修复它。但它看起来像一团糟......

    if (victoryCountdown.victoryCountdown <= 0)
    {
        anim.SetTrigger("Victory");
    }
于 2018-09-29T04:10:48.287 回答
0

看起来您正在定义一个 VictoryCountdown 类型的对象,并且您正在命名该对象victoryCountdown。您的比较不是访问类变量victoryCountdown,而是访问对象。要获取该变量,您必须执行诸如victoryCountdown.victoryCountdown 之类的操作,您可以在其中通过类的实例访问该变量(尽管我建议更改类实例的名称以避免这种混淆)。

我还要注意,您想要的变量是浮点数,而 0 是整数,因此比较可能效果不佳(我不太熟悉 C# 如何处理这种类型差异)

于 2018-09-29T04:12:47.060 回答