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下就会出现这个类,点击后就出现了窗体,然后将预制体拖入,填入需要实例化的空物体的标签就可批量实例化相同物体。
Unity3d UnityEditor EditorWindow 自定义窗体控件的更多相关文章
- (转)sl简单自定义win窗体控件
sl简单自定义win窗体控件 相信大家接触过不少win窗体控件ChildWin子窗口就的sl自带的一个 而且网上也有很多类似的控件,而今天我和大家分享下自己制作个win窗体控件,希望对初学 ...
- winform窗体控件(全)
回顾跟补充下除了昨天那常用6个其他的winform窗体控件作用 1:Button:按钮 (1)AutoSize:如果是True的情况下,内容将会撑开:False的话会另起一行 (2)Enabled: ...
- C# DataGridView自定义分页控件
好些日子不仔细写C#代码了,现在主要是Java项目,C#.Net相关项目不多了,有点手生了,以下代码不足之处望各位提出建议和批评. 近日闲来无事想研究一下自定义控件,虽然之前也看过,那也仅限于皮毛,粗 ...
- C#Winform VScrollBar+Pannel自定义列表控件(原)
该控件的主要实现思路是用的objective-c中的自定义控件思路,主视图中放子视图 效果图 (窗体调用代码) public partial class Form1 : RibbonForm { Li ...
- DuiLib 自定义识别控件
遇到一个断点无法识别自定义的控件,运气比较好,一搜就搜出来了: 参考地址:http://www.bkjia.com/ASPjc/992050.html 主要是这个函数: CControlUI* CDi ...
- (九)ASP.NET自定义用户控件(2)
http://www.cnblogs.com/SkySoot/archive/2012/09/04/2670678.html 用户控件 在 .NET 里,可以通过两种方式把自己的控件插入到 Web 窗 ...
- 如何在多线程中调用winform窗体控件
由于 Windows 窗体控件本质上不是线程安全的.因此如果有两个或多个线程适度操作某一控件的状态(set value),则可能会迫使该控件进入一种不一致的状态.还可能出现其他与线程相关的 bug,包 ...
- C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法
C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法 1.新建组件这里可以自定义一个Panel控件起名为PanelEx 2.增加一个BoderColor属性和BoderSize属性 pr ...
- C# WinForm窗体控件GroupBox修改边框颜色控件
C# WinForm窗体控件GroupBox修改边框颜色控件 1.新建组件这里可以自定义一个GroupBox控件起名为GroupBoxEx 2.增加一个BoderColor属性 private Col ...
随机推荐
- ES 中文分词
一.大名鼎鼎的中文插件IK的安装配置 1. 在插件目录中建立IK的目录 mkdir $ES_HOME/plugins/analysis-ik 2. 下载IK 的类库jar 文件到IK目录 cd $ES ...
- Linux 下的 blog客户端
apt-cahce search metaweblog found gnome-blog blogilo try blogilo
- npm install express -g出错
npm ERR! Windows_NT npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program ...
- Express使用html模板
express默认使用jade模板,可以配置让其支持使用ejs或html模板. 1. 安装ejs 在项目根目录安装ejs. npm install ejs 2.引入ejs var ejs = requ ...
- mysql备份和恢复
摘自:http://safe.it168.com/a2009/1108/805/000000805490.shtml 要备份数据库" phpbb_db_backup " #mysq ...
- C#(MVC) Word 替换,填充表格,导出并下载PDF文档
近期做一个关于C# 操作 Word 模板 文档的功能模块,查阅资料,最终完美完成任务,记录下来,以便后面还会用到.
- javascript for
var k = ["a", "b", "c", false]; for(var i = 0, m; m = k[i]; i++) { con ...
- 【UVA10603】Fill (构图+最短路)
题目: Sample Input22 3 4 296 97 199 62Sample Output2 29859 62 题意: 有三个杯子它们的容量分别是a,b,c, 并且初始状态下第一个和第二个是空 ...
- java中如何实现全局变量
有时一个项目中会多处涉及到路径,当你把这个项目移植到别的电脑上时就要一一修改这些路径,过程十分繁琐,所以一个全局变量在这时是必不可少的. 遗憾的是java等oo语言并没有全局变量,这怎么办呢?下面介绍 ...
- 51,PIC,AVR单片机它们的优点缺点都有哪些?
我有幸接触了几款单片机,并用它们做了一些项目.现在想做个小总结,谈一下自己用各种单片机的感受.仅是个人意见,仁者见仁智者见智. 传统51,我想我就不多说了,适合菜鸟入门,容易上手,价格一般(从性价比方 ...