Unity 6.3
0 онлайн 44 гостей 3 в системе
Вход

EditorGUI.hyperLinkClicked

Параметры

Параметр Описание
значение Первый параметр типа EditorWindow соответствует окну, содержащему текст, который был нажат. Второй параметр типа HyperLinkClickedEventArgs содержит данные гиперссылки.

Описание

Событие, используемое для реагирования на щелчки по текстовой части гиперссылки.

В текстовой строке гиперссылка определяется с помощью тега <a>.

<a href="https://docs.unity3d.com">Documentation link</a>

Параметры гиперссылок возвращаются в HyperLinkClickedEventArgs.

В примере выше, словарь HyperLinkClickedEventArgs.hyperLinkData будет иметь один элемент ключа "href" и значения "https://docs.unity3d.com".

Обратите внимание, что этот параметр уже по умолчанию используется для открытия URI. Он также обрабатывает пути и вы можете добавить параметр line для открытия файла непосредственно на конкретной строке.

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

This is the <a href=\"https://unity.com/\">unity website</a> and this is the <a href=\"https://docs.unity3d.com\">unity documentation website</a>

Событие содержит информацию только о той части гиперссылки, которая была нажата.

Используйте параметр window для того, чтобы реагировать только на гиперссылки, которые были нажаты в этом окне. Если вы не фильтруете по окну, вы можете реагировать на другие гиперссылки, такие как гиперссылки в Консоли или Profiler.

using System;
using UnityEditor;
using UnityEngine;

class EditorGUIHyperLinkClicked : EditorWindow
{
    [MenuItem("Examples/EditorGUIHyperLinkClicked")]
    static void Init()
    {
        var window = GetWindow<EditorGUIHyperLinkClicked>();
        window.Show();
    }

    void OnGUI()
    {
        GUIStyle style = new GUIStyle() { richText = true };
        EditorGUILayout.TextField("<a data=\"some data\" otherData=\"some other data\">displayed string</a>", style);
    }

    static EditorGUIHyperLinkClicked()
    {
        EditorGUI.hyperLinkClicked += EditorGUI_hyperLinkClicked;
    }

    private static void EditorGUI_hyperLinkClicked(EditorWindow window, HyperLinkClickedEventArgs args)
    {
        if (window.titleContent.text == "EditorGUIHyperLinkClicked")
        {
            var hyperLinkData = args.hyperLinkData;
            var data = hyperLinkData["data"];
            var otherData = hyperLinkData["otherData"];

            Debug.Log($"data: {data}, otherData: {otherData}");
        }
    }
}