Unity: не удалось найти тип или имя пространства имен «функция» - PullRequest
0 голосов
/ 31 января 2019

Я делаю 3D-игру Unity и хочу реализовать таймер.Проблема в том, что я получаю следующую ошибку в scirpt:

Невозможно неявно преобразовать тип 'float' в 'int'.Существует явное преобразование (вам не хватает приведения?)

Как решить проблему?

Сценарий Timer.cs:

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

public class Timer : MonoBehaviour
{
    Text instruction;
    // Start is called before the first frame update
    void Start()
    {
        instruction = GetComponent<Text>();

    }

    // Update is called once per frame
    int timeLeft = 30;

    void Update()
    {
        timeLeft -= Time.deltaTime;
        instruction.text= (timeLeft).ToString();
        if (timeLeft < 0)
        {
         //   GameOver();
        }
    }
}

Также в инспекторе Кажется, что я не могу назначить конкретное текстовое поле.

Editor View

Editor View

Ответы [ 3 ]

0 голосов
/ 31 января 2019

Time.deltaTime - это число с плавающей точкой.

Либо замените timeLeft на плавающие.

float timeLeft=30f;

, либо приведите, как ожидается: timeLeft-=(int)Time.deltaTime;

0 голосов
/ 31 января 2019

Здесь:

int timeLeft = 30;
timeLeft -= Time.deltaTime;

Time.deltaTime - это float, а timeLeft - int, вам нужно преобразовать число с плавающей точкой в ​​int, прежде чем делать все остальное.

int timeLeft = 30;
timeLeft -= (int)Time.deltaTime;

Это то, что ошибка означает под

Существует явное преобразование (вам не хватает приведения?)

Да!

0 голосов
/ 31 января 2019

Time.deltaTime - это число с плавающей точкой, и вы пытаетесь присвоить число с плавающей точкой целому числу в timeLeft -= Time.deltaTime, измените timeLeft на float.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...