Unity中Editor的ProgressBar的使用demo

天涯浪子 提交于 2019-12-03 15:33:04
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();
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!