1.BuiltinAttribuite
[Multiline] 多行显示文本
[Range(0,100)]
[HideInInspector]
[Space(20)]
[Header(“**”)] 标题
[Tooltip(“”)] 提示
[CanEditMulti]
2.Inspector
[CustomEditor(typeof(T))]
Class XXX{
T t;
void onEnable(){
t= target as T
}
override void OnInspectorGUI(){
}
}
GUI.color 不用恢复
GUILayoutUtility.GetRect(width,height) 不用管位置
EditorGUI.ProgressBar(rect,process,text) 进度条
EditorGUILayout.Foldout(bool,content) 是否折叠
EditorGUI.indentLevel 层级 加完之后记得减去
EditorGUILayout.HelpBox(“xx”,MessageType)提示
3.EditorWindow
GUI.skim.label.fontSize
GUI.skin.label.alignment
Application.CaptureScreenshot(.png) 截图
4.Handles //选中才会显示 Scene界面
void OnSceneGUI(){
Handles.Label(pos,txt) //scene场景下一行文字
radius= Handles.RadiusHandle(qua,pos,radius) //球形调节
value=Handles.ScaleValueHandle(value,pos,qua,size,value,fun,snap) //float调节 fun: Handles.XXXCap 有圆形有箭头etc.
pos=Handles.PositionHandle(pos,qua) //Vector3调节
Handles.DrawLine(pos1,pos2) //画线
qua=Handles.RotationHandle(qua,pos) //方向调节
Handles.BeginGUI(); //添加按钮
if(GUILayout.Button()){}
Handles.EndGUI();
}
5.Gizmos 不用写在Editor下 用来显示 不能用来调节
void OnDrawGizmos(){
}
void OnDrawGizmosSelected(){
}
6.PropertyDrawer 将一个类的属性画出来 重用
[CustomPropertyDrawer(typeof(class))]
class:PropertyDrawer 继承
Rect top,midleft,midright,bottom; 属性矩形框
override void OnGUI(Rect,SerilizedProperty,GUIContent){
1。计算属性的框的位置
2。property.FindPropertyRelative("xxx") 获取属性
3。EditorGUI.PropertyField()
}
override void float GetPropertyHight(){
return base...*n
}
7.PropertyAttributes 通过特性 画属性 类似[Header] [Range]
public class xxx:PropertyAttribute{
}
[CustomPropertyDrawer(typeof(xxx))]
public class xxxDrawer:PropertyDrawer{
onGUI(){
attribut as (xxxAttribute)
}
override float GetPropertyHight() 高度
}
8.DecorateDrawer 直接画 不需要依赖属性
attribute
[CustomPropertyDrawer(typeof(attribute))]
class:DecorateDrawer{
override void OnGUI(rect){
}
override float GetHeight(){
return xxx;
}
}
GUI.DrawTexture(pos,texture) 画画