• Unity3d UnityEditor EditorWindow 自定义窗体控件


    功能:是因为公司的模型组需要一个插件,在MAYA中有很多个复制物体,导出的时候只导出一个,其他相同的物体只导出点的位置信息。这样进入Unity里就是一个物体和N个相同物体的位置点,代码简单但是需要用插件形式,正好没研究过这方面,所以研究下Unity的插件编写。

    网上的资料:http://blog.csdn.net/jjiss318/article/details/7435708

    根据这篇文章,我做了个简易插件。大概思路是首先将所有带有位置信息的空物体在一个Tag下面获得,然后便利他们在他们的位置下实例化预制体。

    首先建立个脚本DuplicatePrefabs。

    注意要先添加UnityEditor;引用,以及继承EditorWindow

    定义两个变量,一个Transform存储预制体,一个字符串存储Tag的名字


    using System;
    using UnityEngine;
    using UnityEditor;
    
    
    public class DuplicatePrefabs : EditorWindow
    {
        public Transform PrefabObj;
        public string TagName="Locator";
    
        private GameObject[] objs;
    
        //设置插件在菜单栏的位置   和快捷键
        [MenuItem("Window/DuplicatePrefabs %Q")]
        //实例化窗体
        static void Init()
        {
            DuplicatePrefabs window = (DuplicatePrefabs)EditorWindow.GetWindow(typeof(DuplicatePrefabs));
            window.Show();
        }
        //用GUI画出窗体的空间布局
        void OnGUI()
        {
            GUILayout.BeginHorizontal();
            GUILayout.Label("预制体", EditorStyles.boldLabel);
            PrefabObj = EditorGUILayout.ObjectField(PrefabObj, typeof(Transform)) as Transform;
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            GUILayout.Label("标签名称",EditorStyles.boldLabel);
            TagName = EditorGUILayout.TextField(TagName,EditorStyles.boldLabel);
            GUILayout.EndHorizontal();
            if (GUILayout.Button("应用"))
            {
                fnDuplicate();
            }
        }
        /// <summary>
        /// 便利Tag下物体并实例化
        /// </summary>
        void fnDuplicate()
        {
            objs = GameObject.FindGameObjectsWithTag(TagName);
            foreach(GameObject obj in objs)
            {
                Instantiate(PrefabObj, obj.transform.position, obj.transform.rotation);
            }
        }
      
    }
    这样,等Unity加载完脚本后在Window下就会出现这个类,点击后就出现了窗体,然后将预制体拖入,填入需要实例化的空物体的标签就可批量实例化相同物体。



  • 相关阅读:
    echarts实现中国地图(部分省份版)
    Head First 设计模式——与设计模式相处
    Head First 设计模式-复合模式
    Head First 设计模式-状态、代理模式
    Head First 设计模式-模板方法、迭代器
    魔幻的一个月~
    Head First 设计模式-命令与适配器模式
    突然想写点什么……
    Head First 设计模式- 工厂与单件模式
    Head First 设计模式——观察者与装饰者模式
  • 原文地址:https://www.cnblogs.com/YDoubleC/p/6203730.html
Copyright © 2020-2023  润新知