Unity UI значение из GetComponent поместить в в Text

126
03 октября 2019, 14:20

Есть скрипт Movie который служит для управления player'ом и в нем же прописано кол-во здоровья. Нужно вывести кол-во хп на Canvas в Text. Делаю это через скрипт Game.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Game : MonoBehaviour
{
    public Text Zdor;
    public Text Level;
    public Text Point;
    public string mytext;
    // Update is called once per frame
    void Update()
    {
        Movie hp = gameObject.GetComponent("health") as Movie;
        Zdor = hp;
    }
}
Answer 1

На скорую руку скрипт, он ищет игрока и скрипт в нем. Кидается на сам Text, который будет выводить:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class HealthScript : MonoBehaviour {
    public Movie HP;
    // Use this for initialization
    void Start () {
        HP = GameObject.Find("Player").GetComponent<Movie>();
    }
    // Update is called once per frame
    void Update () {
        gameObject.GetComponent<Text>().text = HP.health.ToString();
    }
}

Проверил на своем - отображает 100 на экране вместо стандартного New Text. Если нужно скрипт на канвасе, то этот Text Zdor так же как и игрока найти, потом передать ему текст:

GameObject.Find("Zdor").GetComponent<Text>().text = HP.health.ToString();

так же с Level и Point.

Answer 2

Класс Movie не указан, так что примерно так:

public class Movie : MonoBehaviour
{
    public int hp;
     ....
}
public class Game : MonoBehaviour
{
    public Text Zdor;
    public Text Level;
    public Text Point;
    public string mytext;
    Movie movie;
    void Start(){
     // Не нужно получать компонент в Update, каждый кадр - сделайте это один раз в Start или Awake. 
     movie = gameObject.GetComponent("health") as Movie;
    }
    // Update is called once per frame
    void Update()
    {
        Zdor.text = movie.hp;
    }
}

Конечно, если все правильно инициализировано.

Для чтения:

https://docs.unity3d.com/ScriptReference/UI.Text-text.html

https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/types/#custom-types

https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/reference-types

READ ALSO
Как создать видеоплеер на c#? [дубликат]

Как создать видеоплеер на c#? [дубликат]

На данный вопрос уже ответили:

134
C# windows service интерфейсы

C# windows service интерфейсы

Делаю службу для своих серверов с поднятой впн, нужно брать номер подсети и работать с ним

114
Cпавн префаба в рандомной точке

Cпавн префаба в рандомной точке

Нужно заспавнить префаб противника в рандомной точке за областью экранаКак можно реализовать?

119