95Muffin Ответов: 1

Как исправить ошибку CS0029: не удается неявно преобразовать тип 'bool' в 'string'


Вот сценарий, который у меня есть на Unity


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

public class PlayerMovement : MonoBehaviour
{
    
    public float speed;
    public Text ChestText;
    
    Animator anim;
    public bool CurrentChest;
    public bool OpenedChest;
    Vector2 lookDirection = new Vector2(1, 0);
    private Rigidbody2D rb2d;

    void Start()

    {
        rb2d = GetComponent<rigidbody2d>();
        anim = GetComponent<animator>();
        CurrentChest = (true);
        ChestText.text = "";
    
    }

    // Update is called once per frame
    void Update()
    {
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");

        Vector2 move = new Vector2(horizontal, vertical);

        if (!Mathf.Approximately(move.x, 0.0f) || !Mathf.Approximately(move.y, 0.0f))
        {

            lookDirection.Set(move.x, move.y);
            lookDirection.Normalize();
        }


        anim.SetFloat("Look X", lookDirection.x);
        anim.SetFloat("Look Y", lookDirection.y);
        anim.SetFloat("Speed", move.magnitude);

        Vector2 position = rb2d.position;
        position = position + move * speed * Time.deltaTime;
        rb2d.MovePosition(position);

    }
    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.CompareTag("Chest"))
        {
            ChestText.text = "Press 'E' to open";
            if (Input.GetKeyDown("e"))
            {
                CurrentChest = false;
                OpenedChest = true;
            }
        }

        void OnTriggerExit()
        {
            ChestText.text = false;
        }
    }
   
}


Что я уже пробовал:

-извините, если это выглядит очень плохо, я начал программировать совсем недавно.

1 Ответов

Рейтинг:
2

Afzaal Ahmad Zeeshan

Проблема вот в чем:

void OnTriggerExit()
{
    ChestText.text = false;
}
Ошибка говорит о том, что вы пытаетесь сохранить значение типа boolean в переменной (свойство, поле, член...), которая ожидает строковое значение.

К счастью, в C# Вы делаете ToString() вызов функции и преобразование данных в строку. Итак, измените свою функцию на:
void OnTriggerExit()
{
    ChestText.text = false.ToString(); 
}
Но опять же, какой в этом смысл? Может быть, вы хотели изменить CurrentChest?

логическое значение для строки. | Онлайн-компилятор C# | .NET Fiddle[^]