TextMesh Pro и кликабельные ссылки

Графический интерфейс пользователя

TextMesh Pro и кликабельные ссылки

Сообщение Rachok 07 июн 2019, 09:02

Добрый день!
Пытаюсь добавить в тексте ссылки, при нажатии на которые откроется другой текст. Т.е. такой аналог кнопки. ссылки не ведут куда-то в другое окно или интернет.
Рассматриваю семплы уже 3 день и пытаюсь повторить - нифига не выходит.
Я хочу, чтобы при наведении на ссылку в TextMesh Pro:
Синтаксис:
Используется csharp
Тут какой-то текст <link="id777"><u>а тут ссылка</u></link>
 

я в коде получал id777, при уходе с ссылки - "0", например, ну а клик я сделаю у канваса, наверное.
Скопировал текст, закинул те же самые скрипты и префабы в поля, как и в демо-сцене:
Изображение
Не работает, в общем.
Как оживить ссылки?
Rachok
UNIт
 
Сообщения: 126
Зарегистрирован: 19 авг 2016, 09:07

Re: TextMesh Pro и кликабельные ссылки

Сообщение AngryCat 07 июн 2019, 12:08

На текс вешай Button, делай его синим, создавай скрипт, пиши
Синтаксис:
Используется csharp
public void openWebPage() {Application.OpenUrl(сюда ссылку) ;}
Все. В Button только не забудь метод openWebPage определить. Будет тебе счастье. :) P. S по какой прияине не работает TmPro, не знаю. Возможно так же нужен компонент Button, может туда нужно вбить какой-то метод. Но я бы не стал париться и запихнул бы мой код :)
Здесь могла бы быть ваша реклама.
Аватара пользователя
AngryCat
Старожил
 
Сообщения: 716
Зарегистрирован: 20 июл 2018, 22:29
Skype: Дискорд - Флеш#4099

Re: TextMesh Pro и кликабельные ссылки

Сообщение Rachok 07 июн 2019, 12:20

Не-не-не, во-первых, открывать веб-страницы мне не нужно (я об этом указывал))))
Во-вторых, кнопка мне не подойдет, т.к. в ТекстМеш помещается строка из кода, может быть такая:
Синтаксис:
Используется csharp
Тут какой-то текст <link="id777"><u>а тут ссылка</u></link>

или такая
Синтаксис:
Используется csharp
Тут какой-то другой текст <link="id666"><u>а тут СОВСЕМ ДРУГАЯ ссылка</u></link> и вот тут дальше тоже текст

Предположим, что первая ссылка с id777 будет менять текст, а вторая с id666 закрывать канвас...
Вот я и хотел получить ID ссылки под курсором...
Rachok
UNIт
 
Сообщения: 126
Зарегистрирован: 19 авг 2016, 09:07

Re: TextMesh Pro и кликабельные ссылки

Сообщение seaman 07 июн 2019, 21:02

seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: TextMesh Pro и кликабельные ссылки

Сообщение Rachok 08 июн 2019, 07:15

Спасибо!
Я видел эту статью, но не обратил внимание на последний кусочек кода.
В общем, весь код для моей задачи сводится к:
Синтаксис:
Используется csharp
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine.UI;


public class link_script : MonoBehaviour, IPointerClickHandler//, IPointerEnterHandler, IPointerExitHandler, IPointerUpHandler
{

    [SerializeField]
    public TextMeshProUGUI textMessage;
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

    }
    public void OnPointerClick(PointerEventData eventData)
    {
        int linkIndex = TMP_TextUtilities.FindIntersectingLink(textMessage, eventData.position, eventData.pressEventCamera);
        if (linkIndex == -1)
        {
            Debug.Log("Open link -1");
            return;
        }
        TMP_LinkInfo linkInfo = textMessage.textInfo.linkInfo[linkIndex];
        string selectedLink = linkInfo.GetLinkID();
        Debug.Log("Open link " + selectedLink);
    }
}
 

Все вышло оооочень просто.
Спасибо!
Rachok
UNIт
 
Сообщения: 126
Зарегистрирован: 19 авг 2016, 09:07


Вернуться в uGUI

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2