forked from Shardstone/trail-into-darkness
47 lines
1.8 KiB
C#
47 lines
1.8 KiB
C#
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace InspectorToolkit {
|
|
public class LinkAttribute : PropertyAttribute {
|
|
|
|
public readonly string message;
|
|
public readonly string url;
|
|
|
|
public LinkAttribute(string message, string url) {
|
|
this.message = message;
|
|
this.url = url;
|
|
}
|
|
}
|
|
}
|
|
|
|
#if UNITY_EDITOR
|
|
namespace InspectorToolkit.Internal {
|
|
|
|
[CustomPropertyDrawer(typeof(LinkAttribute))]
|
|
public class LinkAttributeDrawer : PropertyDrawer {
|
|
public override float GetPropertyHeight(SerializedProperty property, GUIContent label) {
|
|
return base.GetPropertyHeight(property, label) + EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
|
|
}
|
|
|
|
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) {
|
|
|
|
//If you don't capture these and recreate below, GUIContent label becomes replaces with LinkButtons GUIContent
|
|
string labelText = label.text;
|
|
string labelTooltip = label.tooltip;
|
|
|
|
string message = ((LinkAttribute)attribute).message;
|
|
string url = ((LinkAttribute)attribute).url;
|
|
|
|
var linkPosition = new Rect(position.x, position.y, position.width, EditorGUIUtility.singleLineHeight);
|
|
|
|
if(EditorGUI.LinkButton(linkPosition, message)) {
|
|
Application.OpenURL(url);
|
|
}
|
|
|
|
var fieldPosition = new Rect(position.x, position.y + EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing, position.width, EditorGUIUtility.singleLineHeight);
|
|
|
|
EditorGUI.PropertyField(fieldPosition, property, new GUIContent(labelText,labelTooltip));
|
|
}
|
|
}
|
|
}
|
|
#endif |