Unity编辑器扩展

代码放在Assets/Editor中:

using UnityEngine;
using UnityEditor;

public class MyWindow : EditorWindow {
    const string MenuName = "Atwal Code Snippet";
    enum Code_Type
    {
        input_code,
        rigidbody_force_code,
        camera_follow
    }

    static Code_Type type = 0;
    static string Code_Name = "";

    [MenuItem(MenuName + "/H&V Input")]
    public static void Code_HVInput() {
        type = Code_Type.input_code;
        Code_Name = "H&V Input";
        GetWindow(typeof(MyWindow));
    }

    [MenuItem(MenuName + "/Rigidbody Force")]
    public static void Code_RigidbodyForce()
    {
        type = Code_Type.rigidbody_force_code;
        Code_Name = "Rigidbody Force";
        GetWindow(typeof(MyWindow));
    }

    [MenuItem(MenuName + "/Camera Follow")]
    public static void Code_CameraFollow()
    {
        type = Code_Type.camera_follow;
        Code_Name = "Camera Follow";
        GetWindow(typeof(MyWindow));
    }

    private void OnGUI()
    {
        Debug.Log(type);
        string content = "";
        switch(type)
        {
            case Code_Type.input_code:
                content = @"float moveHorizontal = Input.GetAxis(""Horizontal"");
float moveVertical = Input.GetAxis(""Vertical""); ";
                break;
            case Code_Type.rigidbody_force_code:
                content = @"Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
GetComponent<Rigidbody>().AddForce(movement * speed * Time.deltaTime); ";
                break;
            case Code_Type.camera_follow:
                content = @"public GameObject player;
private Vector3 offset;

// Use this for initialization
void Start () {
    //摄像机与跟随物体的初始相对位置
    offset = transform.position - player.transform.position;
}

// Update is called once per frame
void LateUpdate () {
    //跟随物体的位置加上相对位置
    transform.position = player.transform.position + offset;
}";
                break;
        }
        GUILayout.Label(Code_Name + " Code", EditorStyles.boldLabel);
        GUILayout.TextArea(content, GUILayout.ExpandHeight(true));
    }
}

效果:

时间: 2024-10-13 08:59:26

Unity编辑器扩展的相关文章

Unity编辑器扩展chapter1

Unity编辑器扩展chapter1 unity通过提供EditorScript API 的方式为我们提供了方便强大的编辑器扩展途径.学好这一部分可以使我们学会编写一些工具来提高效率,甚至可以自制一些小的插件应用的项目工程中去,达到复用的目的.今天首先创建一个新场景生成的菜单项,生成的场景已经绑定好需要的游戏对象及脚本. Tips:1.官方API 2.编辑器扩展脚本都需放在Editor文件夹下,Editor的层级和数目没有要求 EditorUtil.cs :编辑器扩展类,向外部提供编辑器扩展方法

Unity编辑器扩展Texture显示选择框

学习NGUI插件的时候,突然间有一个问题为什么它这些属性可以通过弹出窗口来选中呢? 而我自己写的组件只能使用手动拖放的方式=.=. Unity开发了组件Inspector视图扩展API,如果我们要写插件方便别人来使用,使用编辑器扩展API让我们的组件显示的更华丽,使用方便 Texture弹出选择框选中图片赋值: 1个组件对应1个Edit扩展器,继承Editor必须让入Editor文件夹下 MyComponent: using UnityEngine; using System.Collectio

unity编辑器扩展一批量生成图片预制

觉得自己正在慢慢退化,所以以后坚持写博客记录一下成长. 今天分享一个以前用到的一个功能,unity编辑器的一个扩张工具--批量生成图片,有兴趣的朋友可以进行扩展 闲话少说直接上代码: namespace Game.Utility{    public class BatchCreatePrefab : EditorWindow    {        [MenuItem("Tools/生成预制")]        private static void PrefabWrapTool()

Unity 编辑器扩展 场景视图内控制对象

http://blog.csdn.net/akof1314/article/details/38129031 假设有一个敌人生成器类,其中有个属性range用来表示敌人生成的范围区域大小,那么可以用OnDrawGizmos函数来绘制它在场景视图所代表的区域大小,便于开发调试.这个敌人生成器类,类似如下: 12345678910111213141516171819   using UnityEngine;using System.Collections; public class EnemySpa

Unity 编辑器扩展自定义窗体

这次看见Unity还可以自定义弹出窗体,让我很好奇.于是就去网上找文章看了看. 如果想自定义窗体需要把类放入Editor文件夹下面. 代码如下: using UnityEngine; using UnityEditor; public class MyEditor : EditorWindow { [MenuItem("GameObject/window")] static void AddWindow() { Rect wr = new Rect(0, 0, 500, 500); M

Unity编辑器扩展 – Menu Items

参考:https://unity3d.com/cn/learn/tutorials/topics/interface-essentials/unity-editor-extensions-menu-items 通过Unity MenuItem属性类可以扩展主菜单.属性栏内容菜单.层级栏菜单及资源栏菜单. MenuItem可以将任意静态函数转换为菜单命令,只有静态函数能使用MenuItem属性. 添加菜单选项 添加一个简单的主菜单按钮 using UnityEditor; using UnityE

Unity编辑器扩展相关知识

1.一些类 1.1.GUI 界面 1.2.GUILayout 界面布局 1.3.GUIStyle 界面样式 1.4.GUIContent 界面内容 1.5.Editor 编辑器 1.6.EditorUtility 编辑器工具 1.7.EditorWindow 编辑器窗口 1.8.EditorGUI 编辑器界面 1.9.EditorGUILayout 编辑器界面布局 1.10.EditorGUIUtility 编辑器界面工具 1.11.Handles 控制柄 1.12.HandleUtility

Unity编辑器扩展-Custom List, displaying data your way

本文转自http://catlikecoding.com/unity/tutorials/editor/custom-list/ Custom List, displaying data your way In this Unity C# tutorial you will create a custom visualization for arrays and lists in the editor. You will learn to create a custom editor use S

unity shader 编辑器扩展类 ShaderGUI

这应该unity5才出的新功能了,今天看文档时刚巧看到了,就来尝试了一下. 效果如图: shader 的编辑器扩展分为2种方法: 是通过UnityEditor下的ShaderGUI类来实现的,形式比较近似于我们一般对unity编辑器的扩展方式. 是通过直接在shader代码上通过unity为我们预定义好的一些命令来扩展. 个人比较推荐使用第一种方法,第二种在尝试时发现 ①是第二种控件的种类有限.限制还特别多,变量申请的不对的话,有时也不报错,不利于维护. ②是文档里还有错误+没说清楚的地方. ③