Почему текст больше не работает при нажатии на куб / ы как кнопки / кнопки?

#c# #unity3d

#c# #unity3d

Вопрос:

Это скриншот текстового пользовательского интерфейса, где цифры должны отображаться, когда игрок нажимает цифры :

Текстовый интерфейс

Если я сам введу текст в инспекторе, он покажет его :

Введенный в инспекторе, он показывает цифры

но если в игре я нажимаю мышью на куб, например, на куб с номером 0, он не показывает 0 в текстовом интерфейсе. Я включил средство визуализации сетки с ключом 0 только для того, чтобы показать куб на нем для примера :

Не отображается текст 0 в текстовом интерфейсе

Независимо от того, сколько раз я нажимаю на кнопки (кубы), в текстовом интерфейсе ничего не отображается.

Этот скрипт прикреплен к каждому кубу (кнопке) :

 using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using UnityEngine;

public class SecurityKeypadKeys : MonoBehaviour
{
    public TextMesh text;

    private void Start()
    {
        text = GameObject.Find("Security Keypad Text").GetComponent<TextMesh>();
    }

    private void OnMouseDown()
    {
        string[] digits = Regex.Split(transform.name, @"D ");
        foreach (string value in digits)
        {
            int number;
            if (int.TryParse(value, out number))
            {
                text.text = value;
            }
        }
    }
}
  

И когда я использую точку останова, она переходит к событию onmousedown, и в массиве цифр есть 3 элемента, два элемента пустые, просто пустая строка, а один — цифра :

массив цифр

Когда строка пуста, она не попадает в строку text.text только тогда, когда есть цифра: в этом случае текст и значение оба 0 :

текст равен 0

но когда я делаю continue и возвращаюсь к игре, текстовый интерфейс пуст.

Комментарии:

1. Вы назначаете text.text = value; Пробовали ли вы вместо этого использовать text.text = number.ToString(); .. и вы уверены, что больше ничего не меняет текст?

2. Я обнаружил проблему, и это более чем смущает, у меня есть два текста пользовательского интерфейса. проблема в том, что я продублировал объект клавиатуры безопасности и забыл назначить второй текст скрипту на кнопках, и вместо этого каждое введенное число отправлялось в первый текст.

3. Это, кстати, одна большая причина (помимо производительности) Find , которой следует избегать 😉 вместо этого ссылайтесь на свои объекты через инспектор и пропустите свой Start метод 🙂