zoukankan      html  css  js  c++  java
  • 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));
        }
    }

    效果:

  • 相关阅读:
    QingTing.Fm-WPF是调用蜻蜓FMAPI 查询API内容展示,进行播放
    选择图像根据坐标得到图像。头像裁剪器
    wpf使用FFMEPG录制屏幕
    wpf根据X与Y轴获取内部值
    SoftWareHelper
    wpf APlayer 播放
    CefSharp 支持mp4
    面向对象23种设计模式系列(二)- 结构型设计模式
    面向对象23种设计模式系列(一)- 创建型设计模式
    使用cmd命令行(.NET Core CLI)来启动ASP.NET Core 应用程序的多个实例
  • 原文地址:https://www.cnblogs.com/lurenjiashuo/p/unity3d-editor-extensions.html
Copyright © 2011-2022 走看看