Оператор `<= 'нельзя применить к операндам типа` VictoryCountdown' и `int ' - PullRequest
0 голосов
/ 29 сентября 2018
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 type VictoryCountdown 'и `int

Я добился определенного прогресса, но преодолел это препятствие и надеялся, что кто-то более опытный сможет сказатьмне, что я сделал не так.

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Похоже, вы определяете объект типа VictoryCountdown, и вы называете этот объект victoryCountdown.Вы сравниваете не переменную класса victoryCountdown, а объект.Чтобы получить переменную, вы должны сделать что-то вроде victoryCountdown.victoryCountdown, где вы обращаетесь к переменной через экземпляр класса (хотя я бы рекомендовал изменить имя экземпляра класса, чтобы избежать этой путаницы).

Я также хотел бы отметить, что переменная, которую вы хотите, является плавающей точкой, а 0 - целым числом, так что сравнение может не сработать (я не так хорошо знаком с тем, как C # обрабатывает такого рода несоответствия типов)

0 голосов
/ 29 сентября 2018

У вас есть проблемное соглашение об именах.Кроме того, вы пытаетесь сравнить объект
VictoryCountDown с int, и это невозможно.

Вы можете легко исправить это следующим образом.Но это будет выглядеть как беспорядок ...

    if (victoryCountdown.victoryCountdown <= 0)
    {
        anim.SetTrigger("Victory");
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...