Как создавать текст в определенном месте и настроить его под нужный размер?

180
24 марта 2021, 05:20

У меня есть Canvas и скрипт который создает сплывающий текст(создаю текст и двигаю вверх)
Проблема в том что префаб моего текста не настраивается под размер экрана через canvas (UI Scale Mode: Scale With Screen Size) да и создается он немного не в том месте где я ставил

Код :

public class PopupScript : MonoBehaviour
{
    public GameObject popUP; // prefab to instantiate
    public Canvas canvas; // father canvas
    private Vector2 position = new Vector2(0, 0);
    void Start()
    {
//Думаю проблема здесь (Когда я делаю билд игры на телефон координаты скорее всего изменяются ).
//Один из вариантов как создавать текст в нужном мне месте:
//Поставить пустой объект и привязать через Anchors , а потом просто на его месте создавать текст , но я также не знаю будет ли этот способ  корректен .
        position.x = 340;
        position.y = 120;
    }
    public void PopUP(int Score)
    {
        GameObject inst = (GameObject)Instantiate(popUP, position, Quaternion.identity);
        inst.transform.SetParent(canvas.transform);
        var textMeshes = GetComponentsInChildren<Text>();
        foreach (var tm in textMeshes)
        {
            tm.text = Score.ToString();
        }
        Destroy(inst, 4.0f);
    }
}

Код :

public class PopUpScriptPrefabs : MonoBehaviour
{
    void Update()
    {
        transform.Translate(0,1.8f,0);
    }
}

Canvas:

Иерархия(Думаю всю показывать не нужно,только то что как-то связано с текстом ):
Manager - пустой объект.

Инспектор текста

Answer 1

Если вычислять position, то надо учитывать текущие размеры экрана.

Другой вариант - поставить текст в нужное место на сцене, настроить якоря (проверить поведение при разных размерах экрана), сделать невидимым, когда нужно - либо клонировать и перемещать клон, либо делать видимым, перемещать, скрывать и возвращать на место.

PS: В transform.Translate стоит использовать Time.deltaTime.

READ ALSO
Создание кнопки для notifyIcon(Winforms)

Создание кнопки для notifyIcon(Winforms)

Есть форма с кнопкой, после нажатии которой должен появиться notifyiconКак сделать уведомление с кнопкой как на этой картинке:

83
c# библиотеки для работы с прокси

c# библиотеки для работы с прокси

Ребят помогите найти библиотеку, 2 дня ищу без толку

93
Как следить за объектом в unity3D?

Как следить за объектом в unity3D?

Как в Unity3D на C# поворачивать объект так, чтобы он следил за другим объектом по двум осям?

88
Ошибка ArgumentOutOfRangeException

Ошибка ArgumentOutOfRangeException

Если ничего не выбрано, то при нажатии на кнопку DelBut выскакивает ошибка

95