Unity中Editor的ProgressBar的使用demo

unity里面的Editor功能,Editor从字面理解为编辑器的意思,然我们可以利用它更方便的使用unity的引擎工具。
官方文档:https://docs.unity3d.com/ScriptReference/Editor.html
1.第一步,新建一个unity项目,然后新建一个脚本命名为MyActor,有两个属性【生命值/攻击力】;代码如下:




2.第二步,在项目中建一个Editor文件夹,这是做成可视化编辑器的关键;

 3.第三步,直接写编辑器组件类,特别需要注意的是这个类需要继承Editor类,然后我把它命名为CatEditor.cs,并且放在Editor文件夹下; 代码如下:
 
4.最后,我们不需要运行项目,直接回到刚才对象的检视面板(Inspector),我们会发现,我们可以直接可视化操作MyActor.cs这个组件类


MyActor.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MyActor : MonoBehaviour {
    public int Health=100; //生命值
    public int Attack=10; //攻击力
}

MyActorInspector.cs
using UnityEditor;
using UnityEngine;
[ CustomEditor ( typeof ( MyActor ))]
public class MyActorInspector : Editor
{
    public int HealthProp;
    public int AttackProp;
    void OnEnable()
    {
        MyActor myActor = target as MyActor ;
        HealthProp = myActor.Health;
        AttackProp = myActor.Attack;
    }
    public override void OnInspectorGUI()
    {
        HealthProp = EditorGUILayout .IntSlider( "生命值" , HealthProp, 0, 100);
        ProgressBar((HealthProp / 100.0f), "生命值" );
        AttackProp = EditorGUILayout .IntSlider( "攻击力" , AttackProp, 0, 50);
        ProgressBar((AttackProp / 100.0f), "攻击力" );
    }
    private void ProgressBar( float value, string label)
    {
        //定义 Rect
        Rect rect = GUILayoutUtility .GetRect(18, 18, "TextField" );
        //创建progressbar
        EditorGUI .ProgressBar(rect, value, label);
        //添加一个空行
        EditorGUILayout .Space();
    }
}
发布了11 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/LQ753799168/article/details/72614999
今日推荐