Unity 编辑器OnGUI基础用法

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

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

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

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

using UnityEditor;

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

接下来是打开窗口路径

代码部分

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

    public static void Init()
    {
        //是否在运行状态
        if(Application.isPlaying)
        {
            //获取这个并打开
            GetWindow<SkillEditor>("我是窗口名字").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<Texture>("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

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity编辑器拓展教程是一种自定义Unity编辑器功能的方法。通过扩展Unity编辑器,我们可以为开发者提供更方便、高效的开发环境。下面是一个简单的Unity编辑器拓展教程: 1. 创建一个自定义编辑器窗口:首先,我们可以创建一个新的C#脚本文件,并继承自EditorWindow类。在这个脚本中,我们可以自定义一个窗口,并在该窗口中进行编辑器拓展的操作。 2. 实现自定义窗口:在自定义的窗口脚本中,我们可以通过OnGUI函数来实现GUI的绘制和交互逻辑。在这里,我们可以添加自定义的按钮、文本框、滑动条等UI元素,并通过相应的回调函数来处理用户的输入和操作。 3. 使用 SerializedObject 和 SerializedProperty:SerializedObject 和 SerializedProperty 是Unity中的序列化类,通过使用它们可以方便地访问和修改Unity对象的属性。我们可以使用这些类来实现自定义窗口中的属性编辑功能。 4. 添加自定义菜单项和工具栏按钮:通过扩展Unity的菜单和工具栏,我们可以为自定义窗口添加快捷方式。我们可以使用菜单项和工具栏按钮的回调函数来打开我们定义的自定义窗口。 5. 实现其他功能:除了基本的UI绘制和属性编辑外,我们还可以通过Unity的API来实现其他更复杂的功能,如自定义Inspector面板、自定义资源管理等。 Unity编辑器拓展是一个很有用的功能,它可以帮助我们提高开发效率,定制开发流程和工作流程。通过学习和使用Unity编辑器拓展的技术,我们可以更好地适应项目的需求,并优化我们的开发过程。希望以上内容对您有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值