Как преобразовать из строки в UnityEngine.UI.Text - PullRequest
0 голосов
/ 12 февраля 2019

Я очень новичок в Unity и создаю игру.

Я хочу напечатать текстовую метку, но получаю сообщение об ошибке:

Невозможно неявно преобразовать тип'string' to 'UnityEngine.UI.Text'

Как мне это сделать?

Я пробовал ToString, но я думаю, что это для перехода к строке.

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

public class typewrite : MonoBehaviour
{

    private int i;
    public string text;
    public AudioClip clicksound;
    public AudioSource click;
    public string label = "";


    void Start()
    {
        click.clip = clicksound;
    }

    void message() {

        for(i=0; i<=text.Length; i++) {

            label.text += text.Substring(0, i);
            click.Play;

        }

    }
}

Спасибо,

EthanZoneCoding

Следует печатать по одной букве за раз:

E

Ex

Exa

Экзамен

Экзамен

Пример

Пример

И издавать звук каждый раз

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Есть несколько проблем с вашим кодом

  1. Как уже говорилось и упоминалось в другом ответе об ошибке компилятора, вы не можете "преобразовать" string в Text компонент.

    Вы скорее должны назначить его свойству text компонента Text, например

    label.text = "example";
    

Это необходимо сделать, например, в Start

Вам не хватает скобок для вызова

click.Play();

, хотя на самом деле я бы предпочел использовать PlayOneShot

 click.PlayOneShot(clickSound, 1.0f);

Для того, чтобы ваш текст появлялся постепенно, вы должны использовать свой код, например, для Coroutine

public void message() 
{
    // Stop other routines to not have multiple concurrent instances
    StopAllCoroutines();
    StartCoroutine(MessageRoutine());
}

private IEnumerator MessageRoutine()
{
    for(i=0; i<=text.Length; i++)
    {
        label.text += text.Substring(0, i);
        click.Play();
        //or
        click.PlayOneShot();

        // Wait for seconds e.g. 0.1
        // yields makes the routine "interrupt" here,
        // render the frame and continue in the next frame from here
        yield return new WaitForSeconds(0.1f);
    }
}
0 голосов
/ 12 февраля 2019

Ошибка возникает в следующей строке

public Text label = "";

Невозможно присвоить пустую строку свойству типа Text.Вы должны удалить присвоение пустой строки из этой строки.

Если вы хотите установить пустую строку как текст в начале скрипта, вы можете сделать это в методе start:

void Start()
{
    click.clip = clicksound;
    label.text = "";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...