Unity编辑器拓展之十七:NGUI ComponentSelector增加搜索框

博客迁移

个人博客站点,欢迎访问,www.jiingfengji.tech

NGUI ComponentSelector增加搜索框

目的

最近在使用NGUI,给Sprite选择图集的时候,没有搜索框要挨个找挺麻烦,因此修改一下ComponentSelector组件,增加一个搜索框,便于搜索图集

这里写图片描述

Gif动图展示

这里写图片描述

SearchField介绍

关于SearchField介绍请看 Unity编辑器拓展之九

代码

以下代码是修改的NGUI里的ComponentSelector脚本

private SearchField search;
private bool isInit = false;
private string searchStr = "";
private void IfNeedInit()
{
	if(isInit == false)
		search = new SearchField();
	isInit = true;
}

void OnGUI ()
{
	IfNeedInit();
	searchStr = search.OnGUI(new Rect(10,10,200,10),searchStr);
	searchStr = searchStr.ToLower();
	//省略后面源码	
}

bool DrawObject (Object obj)
{
	if (obj == null) return false;
	
	//搜索
	if(!string.IsNullOrEmpty(searchStr) && !obj.name.ToLower().Contains(searchStr)) return false;
	
	bool retVal = false;
	Component comp = obj as Component;
	GUILayout.BeginHorizontal();
	{
		string path = AssetDatabase.GetAssetPath(obj);
		if (string.IsNullOrEmpty(path))
		{
			path = "[Embedded]";
			GUI.contentColor = new Color(0.7f, 0.7f, 0.7f);
		}
		else if (comp != null && EditorUtility.IsPersistent(comp.gameObject))
			GUI.contentColor = new Color(0.6f, 0.8f, 1f);

		retVal |= GUILayout.Button(obj.name, "AS TextArea", GUILayout.Width(160f), GUILayout.Height(20f));
		retVal |= GUILayout.Button(path.Replace("Assets/", ""), "AS TextArea", GUILayout.Height(20f));
		GUI.contentColor = Color.white;

		retVal |= GUILayout.Button("Select", "ButtonLeft", GUILayout.Width(60f), GUILayout.Height(16f));
	}
	GUILayout.EndHorizontal();
	return retVal;
}

以上知识分享,如有错误,欢迎指出,共同学习,共同进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值