效果:
核心代码:
private void RenderProgressSlider()
{
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField("进度:");
var tmpRect = GUILayoutUtility.GetRect(10, 15);
var backRect = new Rect(40, tmpRect.y, 200, 15f);
var contentRect = new Rect(backRect);
contentRect.width = m_Progress*2;
EditorGUI.DrawRect(backRect, Color.white);
EditorGUI.DrawRect(contentRect, new Color32(6, 176, 37, 255));
var valueRect = new Rect(tmpRect);
valueRect.x = contentRect.x + 210;
GUI.Label(valueRect, m_Progress + "%");
EditorGUILayout.EndHorizontal();
}
原理就是利用两个Rect,一个作为背景,填充白色,另一个作为进度色,填充绿色;
完整工程源码在这里:https://github.com/luochanganz/Tick/tree/master/Unity