美文网首页UnityEditorunity
[Unity 3d] EditorButton (Inspect

[Unity 3d] EditorButton (Inspect

作者: 雨落随风 | 来源:发表于2019-05-29 23:48 被阅读67次

在简书上整理一个与 Unity 有关的一系列 GitHub 仓库,希望能帮助到有心人。
笔者计划以一篇文章一个功能点的方式展开,拾取超方便!

简介

笔者今天要推荐的仓库叫 EditorButton
看名字就知道这个是编辑器模式下使用的啦!对,猜的没错,他就是在 Inspector 绘制按键的。
不管是编辑器在运行时还是没有运行,button Mapping的逻辑都可以被执行。

其具备以下特性:

  • Multiple arguments - 可指定多参数
  • Arguments can have default values - 支持带默认值的参数
  • Coroutines are automatically started - 支持携程的运行
  • Return values are printed to the console - 支持返回值(返回值将由 Console 输出)

演示

转载,侵立删

使用

只需要将属性[EditorButton]写在需要被测试的方法上方即可:

    [EditorButton]
    public void PrintStuff(float floatVal, int intVal, string stringVal, bool boolVal) 
    {
        Debug.Log("floatVal "+floatVal);
        Debug.Log("intVal "+intVal);
        Debug.Log("stringVal "+stringVal);
        Debug.Log("boolVal "+boolVal);
    }

上面代码得到的 Inspector 绘制效果如下:



指定好参数后执行,即可得到对应的输出:


情景实战

实际使用中,笔者多用于预制体动态配置和生成,以及场景文件的管理,因为播放时可以出效果但停止后会重置。
实例:场景中存在N多模型,你要随机减一半去,然后呢,还要能恢复回去,那该怎么做呢?
借助 EditorButton 原来可以如此简单:

using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    [SerializeField] Transform target;
    [SerializeField] List<Transform> HidedCubes; //记录被隐藏的对象(必须被序列化在面板上,只有这样才会记录在YAML文件中)
    //演示测试 Random.Range API (返回随机数包含最小值不含最大值)
    [EditorButton]
    private void TestRandom()
    {
        for (int i = 0; i < 20; i++)
        {
            Debug.Log(Random.Range(0, 2));
        }
    }

    //打散这些cube
    [EditorButton]
    private void SeparateCube()
    {
        foreach (Transform item in target)
        {
            item.position = new Vector3(Random.Range(0, 4), Random.Range(0, 4), Random.Range(0, 4));
        }
    }
    //随机隐掉一半左右的Cube
    [EditorButton]
    private void HideHalf()
    {
        foreach (Transform item in target)
        {
            if (Random.Range(0, 2) == 0)
            {
                item.gameObject.SetActive(false);
                HidedCubes.Add(item);
            }
        }
    }
    //将随机隐掉的一半在显出来
    [EditorButton]
    private void ShowHidedCube()
    {
        foreach (Transform item in HidedCubes)
        {
            item.gameObject.SetActive(true);
        }
        HidedCubes.Clear(); //清除记录
    }
}

效果如下:



是不是挺有意思的:

  • 演示了 Random.Range API 的测试,
  • 演示了场景文件的管理 - Cube随机分布
  • 实现了上面提到的需求 - Cube随机隐藏一半且可恢复显示

结语

可以这么理解:EditorButton 就是直接在Inspector面板上给我们写的逻辑(方法)植入一个入口。
这样一来,方便咱们对撰写的功能点做单例测试啦~

链接

EditorButton

备注:该组件不能与 InspectorFoldoutGroup 等其他编辑器扩展 共存在工程中,因为它的存在会覆盖其他编辑器扩展的绘制。

上面的内容童靴们还喜欢吗,本文集持续更新ing哦!

相关文章

  • [Unity 3d] EditorButton (Inspect

    在简书上整理一个与 Unity 有关的一系列 GitHub 仓库,希望能帮助到有心人。笔者计划以一篇文章一个功能点...

  • Unity 3D 创建项目

    Unity 3D 下载 要安装 Unity 3D 游戏引擎的最新版,可以访问 Unity 官方网站 https:/...

  • [unity3d源码] Unity 3D 《farm busin

    Unity 3D 《farm business》农场模拟经营游戏源码下载 1、Unity 3D 《farm bus...

  • Unity基础(12)-物理系统

    1.什么是Unity物理系统 Unity是一款3D引擎软件,内置NVIDIA PhysX物理引擎,使3D物体具备物...

  • 2019-05-14

    unity 3D使用教程 软件简介 Unity3D是由Unity Technologies开发的一个让玩家轻松创建...

  • 是时候该了解下Unity3D了

    现在的 Unity 已经发展到了 Unity 5,使用 Unity 可以创建 2D 或 3D 游戏、建筑格式化、实...

  • 扩展Unity Inspector

    Unity Editor下,可以在不改变原有布局的情况下扩展Inspect的界面。 在继承了Editor的类中,有...

  • Unity迷你卡通风格3D模型精选

    本文介绍Unity Asset Store中迷你卡通风格的优质3D模型素材。整个Unity Asset Store...

  • C# 变量

    参考Unity 3D C# 脚本基础[https://www.w3cschool.cn/unity3d_jc/un...

  • [Unity]如何安装破解Unity

    Unity是一款公司推出的3D游戏动画开发工具,随着Unity 5.6正式版发布结束了5.x产品周期,Unity ...

网友评论

    本文标题:[Unity 3d] EditorButton (Inspect

    本文链接:https://www.haomeiwen.com/subject/cthptctx.html