Unity3d 鼠标拣选小功能集合

最近在做一些优化工具,把鼠标拣选的功能单独抽出来。

可遍历所有选中的某类型资源,会递归文件夹

可编译所有prefab的某个Component,也是递归的

using UnityEngine;
using System.Collections;
using UnityEditor;
using System.Collections.Generic;
using System.ComponentModel;
using Object = UnityEngine.Object;

//在选中的资源中查找
public static class EnumSelection {

	//枚举所有的T类型的资源
	public static IEnumerable<T> EnumInCurrentSelection<T>()
	where T : Object
	{
		Object[] selectionAsset = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);
		foreach (var s in selectionAsset)
		{
			var temp = s as T;
			if (null != temp)
			{
				yield return temp;
			}
		}

		yield break;
	}

	//枚举所有的GameObject类型的资源
	public static IEnumerable<GameObject> EnumGameObjectInCurrentSelection()
	{
		foreach (var s in EnumInCurrentSelection<GameObject>())
		{
			yield return s;
		}

		yield break;
	}

	//递归枚举所有GameObject
	public static IEnumerable<GameObject> EnumGameObjectRecursiveInCurrentSelection()
	{
		foreach (var s in EnumInCurrentSelection<GameObject>())
		{
			foreach(var g in EnumGameObjectRecursive(s))
			{
				yield return g;
			}
		}
	}

	public static IEnumerable<GameObject> EnumGameObjectRecursive(GameObject go)
	{
		yield return go;
		for(int i=0; i<go.transform.childCount; i++)
		{
			foreach (var t in EnumGameObjectRecursive(go.transform.GetChild(i).gameObject))
			{
				yield return t;
			}
		}
	}

	//递归枚举所有Compoent
	public static IEnumerable<T> EnumComponentRecursiveInCurrentSelection<T>()
		where T : UnityEngine.Component
	{
		foreach (var go in EnumInCurrentSelection<GameObject>())
		{
			foreach(var c in go.GetComponentsInChildren<T>(true))
			{
				yield return c;
			}
		}
	}

}

  

时间: 2024-08-06 15:57:36

Unity3d 鼠标拣选小功能集合的相关文章

RPA小功能集合

一.多个表格合并去重 原文地址:https://www.cnblogs.com/rongge95500/p/11068337.html

开发用到的小功能、功能、网站等

平时用到的比较好的工具或网站,收藏以备使用. 网站: 1.验证json.加密等开发实用的小功能集合: http://www.bejson.com/ 2.JavaScript离线代码检查工具——JSLintMate http://ace.acejoy.com/thread-4450-1-1.html (出处: ACE Developer) 3.json 自动生成测试数据网页: http://beta.json-generator.com/NkflPxI7b

Visual Studio Debugger中七个鲜为人知的小功能

Visual Studio debugger是一个很棒的调试工具,可以帮助程序猿们快速地发现和解决问题.这里给大家简单介绍一下VS调试工具中的七个鲜为人知的小功能. 1.    一键跳转到指定语句 调试过程中经常需要拖拽黄箭头,使特定语句执行或者不执行.常规方法就是使用鼠标直接拖拽. 在Visual Studio 2017 15.3预览版中,有一个更简单地跳转到目标行的方法:在目标行盘旋鼠标指针,出现绿色竖线右箭头图标后,按住CTRL后鼠标左键点击,就把调试黄箭头移过去了,再点击调试下一步或者F

由Trust Wallet理解以OA信用盘平台出售带杀大赔小功能太坊钱包管理和智能合约

钱包管理钱包管理就要提到OA信用盘平台出售带杀大赔小功能QQ2952777280 话仙论坛http://hxforum.com 一个类EtherKeystore, 应用的核心业务的处理类, 有钱包管理(创建.删除.导入.导出).助记词转化.签名工作.私钥管理等功能.EtherKeystore中使用了由Trust开源的了两个库: TrustKeystore: 用于管理钱包的通用以太坊密钥库.TrustCore: 区块链核心的数据结构和算法.还有CryptoSwift, 一个标准的安全加密算法集合的

3.小功能大用处

标题 : 3.小功能大用处 目录 : Redis 序号 : 3 10) "students" 127.0.0.1:6379> ? ? ### GEOshell 添加地址位置信息 127.0.0.1:6379> geoadd cities:locations 116.28 39.55 beijing (integer) 1 添加已经存在的key,返回0 127.0.0.1:6379> geoadd cities:locations 116.28 39.55 beijin

使用GO语言实现的日志集中查看的小功能.

程序分为站点端和中心端(相当于一个proxy). 这个小功能主要是解决,程序经常让我们去拖日志,特别烦.所以做个小程序.使程序可以自己去线上查看. 有个问题是,不能把游戏服务器暴露出来,还有就是不能占用业务机器的公网带宽. 这个小程序主要就是中心端(proxy)通过内网获取文件,然后转发给访问端. 中心端主要有两个文件,一个是程序文件.一个是我命名为json的文件(主要是根据ID来分辨分站) 主程序文件内容: package main import ( "encoding/json"

小功能——类似微信里,评论内容里面,点击每个人的用户名进入个人主页

项目里的朋友圈页面,每幅图片的评论内容里面,有不同的用户进行评论,起初想法是点击用户名直接进行回复,后来看微信都是点击评论内容进行回复评论的发起人,这个好做,把这个textview绑定一个监听器就ok了 后来再一想,如果要实现类似微信点击用户名就进入用户的主页,怎么让用户名可以点击呢? 现在父布局下面在new一个水平布局的linearlayout,然后根据把每个用户.包括评论内容都设置进textview里面,然后通过linearlayout的addview()方法,把这些textview添加进去

C#、Java中的一些小功能点总结(持续更新......)

前言:在项目中,有时候一些小的功能点,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小功能点,以备用,并持续更新...... 1.禁用DataGridView表头的排序功能 1 /// <summary> 2 /// 禁止点击列表头进行排序 3 /// </summary> 4 /// <param name="dgv">当前DataGridView控件</param> 5 private

用angular方法简单实现了吃了么搜索小功能,还不太完善,后续会继续添加新内容。

最近接触了Angular框架,今天用里面的http请求方法做了一个小的案例,是一个查询地名获取附近美食的小案例.还不太完善,后面面有时间会继续添加新的内容.这个小案例没有用到任何的jQuery与原生js方法. 先上HTML结构代码与HTML结构中的angular指令. <body ng-app="app"> <div ng-controller="con" id="con"> <h1>吃了么</h1>