Gameplay Ingredients是一组用于 Unity 游戏的运行时和编辑器工具:一组脚本的集合,可在制作游戏和原型时简化简单的任务。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

123 行
3.8 KiB

using UnityEngine;
using UnityEditor;
using System;
namespace NaughtyAttributes.Editor
{
public static class EditorDrawUtility
{
public static void DrawHeader(string header)
{
EditorGUILayout.Space();
EditorGUILayout.LabelField(header, EditorStyles.boldLabel);
}
public static bool DrawHeader(SerializedProperty property)
{
HeaderAttribute headerAttr = PropertyUtility.GetAttribute<HeaderAttribute>(property);
if (headerAttr != null)
{
DrawHeader(headerAttr.header);
return true;
}
return false;
}
public static void DrawHelpBox(string message, MessageType type, UnityEngine.Object context = null, bool logToConsole = true)
{
EditorGUILayout.HelpBox(message, type);
if (logToConsole)
{
switch (type)
{
case MessageType.None:
case MessageType.Info:
Debug.Log(message, context);
break;
case MessageType.Warning:
Debug.LogWarning(message, context);
break;
case MessageType.Error:
Debug.LogError(message, context);
break;
}
}
}
public static void DrawPropertyField(SerializedProperty property, bool includeChildren = true)
{
EditorGUILayout.PropertyField(property, includeChildren);
}
public static bool DrawLayoutField(object value, string label)
{
GUI.enabled = false;
bool isDrawn = true;
Type valueType = value.GetType();
if (valueType == typeof(bool))
{
EditorGUILayout.Toggle(label, (bool)value);
}
else if (valueType == typeof(int))
{
EditorGUILayout.IntField(label, (int)value);
}
else if (valueType == typeof(long))
{
EditorGUILayout.LongField(label, (long)value);
}
else if (valueType == typeof(float))
{
EditorGUILayout.FloatField(label, (float)value);
}
else if (valueType == typeof(double))
{
EditorGUILayout.DoubleField(label, (double)value);
}
else if (valueType == typeof(string))
{
EditorGUILayout.TextField(label, (string)value);
}
else if (valueType == typeof(Vector2))
{
EditorGUILayout.Vector2Field(label, (Vector2)value);
}
else if (valueType == typeof(Vector3))
{
EditorGUILayout.Vector3Field(label, (Vector3)value);
}
else if (valueType == typeof(Vector4))
{
EditorGUILayout.Vector4Field(label, (Vector4)value);
}
else if (valueType == typeof(Color))
{
EditorGUILayout.ColorField(label, (Color)value);
}
else if (valueType == typeof(Bounds))
{
EditorGUILayout.BoundsField(label, (Bounds)value);
}
else if (valueType == typeof(Rect))
{
EditorGUILayout.RectField(label, (Rect)value);
}
else if (typeof(UnityEngine.Object).IsAssignableFrom(valueType))
{
EditorGUILayout.ObjectField(label, (UnityEngine.Object)value, valueType, true);
}
else
{
isDrawn = false;
}
GUI.enabled = true;
return isDrawn;
}
}
}