Unity 编辑器OnGUI基础用法

技能编辑器主要是用于修改一些游戏模型和一些数据的便利的工具 当然也是修改 测试游戏必不可少的一部分  

这些都是在Unity 才能看到的不参与打包所以存放的地方一定要注意 不然打包会报错

要放在Editor文件夹下   如图所示 

Unity 编辑器OnGUI基础用法_第1张图片

废话不多 首先是命名空间是必不可少的

using UnityEditor;

没有这个下面的代码都等于白写

接下来是打开窗口路径

Unity 编辑器OnGUI基础用法_第2张图片

代码部分

public class SkillEditor: EditorWindow
{
    //打开的路径    
    [MenuItem("Tools/SkillEdito")]

    public static void Init()
    {
        //是否在运行状态
        if(Application.isPlaying)
        {
            //获取这个并打开
            GetWindow("我是窗口名字").Show();
        }

     }
}

每次打开时运行  比如加载一些需要用的数据等等

   private void OnEnable()
    {
        
    }

一些具体常用的API和用法  和代码例子  注意OnGUI是每帧调用的不参与打包无需过多的考虑性能问题

private void OnGUI()
{
        //窗口的文字
        GUILayout.Label("技能id :");

        //纵向开始
        GUILayout.BeginVertical();
        //写一些纵向的内容
        //xxxx
        //纵向结束
        GUILayout.EndVertical();

        //横向的开始
        GUILayout.BeginHorizontal();
        //写一些横向的内容
        //xxxx
        //横向的结束
        GUILayout.EndHorizontal();

        //输入的string类型
        skill.nick = GUILayout.TextField( skill.nick, GUILayout.Width(200));

        //输入的Int类型  默认为0
        skill.num = EditorGUILayout.IntField("技能个数",skill.num);

        //输入的Float类型  默认为0.0
        skill.cd = EditorGUILayout.FloatField("技能CD", skill.cd);

        //箱子显示头像等 也可以在里面写一些逻辑
        GUILayout.Box(texture);
        if(GUILayout.Button(texture,GUILayout.Width(50),GUILayout.Height(50)))
        {
            //打开指定文件夹选择图片 并返回地址
            string path = EditorUtility.OpenFilePanel("选择图片", Application.dataPath + "/Resources/icon/", "png");
            string[] a=path.Split('/');
            string[] b = a[a.Length - 1].Split('.');
            texture = Resources.Load("icon/" + b[0]);
            skill.iconpath = "icon/" + b[0];

        }

        //万能的ObjectField 可以放材质 音频 动画 预制体等等
        texture=EditorGUILayout.ObjectField(texture,typeof(Texture),true) as Texture;

        animationclip = (AnimationClip)EditorGUILayout.ObjectField("动作", animationclip, typeof(AnimationClip),true);

        audioClip = (AudioClip)EditorGUILayout.ObjectField("技能音效", audioClip, typeof(AudioClip), true);

        areaeeffect = (GameObject)EditorGUILayout.ObjectField("范围效果", areaeeffect, typeof(GameObject),true);
        
        //下拉列表(存放字符串)和(Enum枚举类型)
        skill.track = EditorGUILayout.Popup("轨迹", skill.track);
        skill.track = (Track)EditorGUILayout.EnumPopup("轨迹", skill.track);
        
        //ScrollView用法和 按钮点击 轻松易上手 大部分都懂没啥可说的
        v2 =GUILayout.BeginScrollView(v2);
        buff = GUILayout.SelectionGrid(buff, buffs.ToArray(),1);
        GUILayout.EndScrollView();

        GUILayout.BeginHorizontal();
        buffdata.type = (BuffType)EditorGUILayout.EnumPopup(buffdata.type);
        if(GUILayout.Button("添加buff"))
        {
            buffs.Add(buffdata.type.ToString());
            buffids.Add(buffs.Count);
        }   
        if(GUILayout.Button("移除buff"))
        {
            buffs.Remove(buffdata.type.ToString());
            buffids.Add(buffs.Count);
        }
        GUILayout.EndHorizontal(); 

    }

For Example

Unity 编辑器OnGUI基础用法_第3张图片

你可能感兴趣的:(Unity,部分效果,unity,c#,游戏策划,游戏程序,编辑器)