@Chshr_Cat

Operator '==' cannot be applied to operands of type 'Collider[]' and 'bool'???

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

public class Timer777 : MonoBehaviour
{
    public Transform trigger;
    public LayerMask layerOn;
    public LayerMask layerOff;

    public bool timer = false;

    public bool ButtonOn = false;
    public bool ButtonOff = false;
    public float TimeStart;
    public Text TextofTimer;
    public bool Timerrunning = true;

    void Start()
    {
      TextofTimer.text = TimeStart.ToString("F3");
    }
    private void Update()
    {
        Collider[]ButtonOn = Physics.OverlapSphere(trigger.position, 0.1f, layerOn);
        Collider[]ButtonOff = Physics.OverlapSphere(trigger.position, 0.1f, layerOff);
        
        if (ButtonOn == true)
        {
            timer = true;
            if ( Timerrunning == true)
            {
            TimeStart += Time.deltaTime;
            TextofTimer.text = TimeStart.ToString("F3");
            }
        }
        else if (ButtonOff == true)
        
        {
            Timerrunning=!Timerrunning;
            timer = false;
        }
    }

}
  • Вопрос задан
  • 93 просмотра
Решения вопроса 1
EveningEugene
@EveningEugene
Unity-разраб
У вас в классе есть переменная public bool ButtonOn;
А также внутри метода Update есть переменная с таким же именем, но другим типом Collider[] ButtonOn;
Когда в методе Update вы делаете сравнение if (ButtonOn == true), подразумевается именно локальная переменная Collider[] ButtonOn. То есть, вы пытаетесь сравнить Collider[] с bool. Либо меняйте название локальной переменной либо пишите так if (this.ButtonOn == true), тогда будет использоваться внешняя переменная класса.
Рекомендую почитать про области видимости. А ещё при добавления кода в пост используйте тег
<code lang="cs">
//your code
</code>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы