12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- using UnityEngine;
-
- namespace UnityEditor.Purchasing
- {
- internal class RichEditorWindow : EditorWindow
- {
- private const string kLightLinkIconPath = "Packages/com.unity.purchasing/Icons/LinkWhite.png";
- private const string kDarkLinkIconPath = "Packages/com.unity.purchasing/Icons/LinkBlack.png";
-
- private GUIStyle m_LinkStyle;
- private Texture m_LightLinkIcon;
- private Texture m_DarkLinkIcon;
-
- internal RichEditorWindow()
- {
- }
-
- internal void GUILink(string linkText, string url)
- {
- m_LightLinkIcon ??= AssetDatabase.LoadAssetAtPath<Texture>(kLightLinkIconPath);
- m_DarkLinkIcon ??= AssetDatabase.LoadAssetAtPath<Texture>(kDarkLinkIconPath);
-
- m_LinkStyle ??= new GUIStyle();
- m_LinkStyle.normal.textColor = EditorGUIUtility.isProSkin ? Color.cyan : Color.blue;
- m_LinkStyle.contentOffset = new Vector2(6, 0); // Indent like other labels
-
- var linkIcon = EditorGUIUtility.isProSkin ? m_LightLinkIcon : m_DarkLinkIcon;
-
- var linkSize = m_LinkStyle.CalcSize(new GUIContent(linkText));
- GUILayout.Label(linkText, m_LinkStyle);
- var linkRect = GUILayoutUtility.GetLastRect();
-
- if (linkIcon != null)
- {
- GUI.Label(new Rect(linkSize.x, linkRect.y, linkRect.height, linkRect.height), linkIcon);
- }
- else
- {
- Debug.LogWarning("Cannot get icon: " + kLightLinkIconPath);
- }
-
- if (Event.current.type == EventType.MouseUp && linkRect.Contains(Event.current.mousePosition))
- {
- Application.OpenURL(url);
- }
- }
-
- }
- }
|