• 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;
    			}
    		}
    	}
    
    }
    

      

  • 相关阅读:
    mysql 查看表注解
    oracle 相关
    sql version control
    ccna
    msql 清库
    mybatisplus,application.properties 配置数据库密码加密
    驱动开发print无法输出问题
    bochs帮助
    以虚御虚用虚拟机调试vt程式
    ssm整合
  • 原文地址:https://www.cnblogs.com/mrblue/p/4962998.html
Copyright © 2020-2023  润新知