zoukankan      html  css  js  c++  java
  • 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;
    			}
    		}
    	}
    
    }
    

      

  • 相关阅读:
    分析WordPress数据表之用户表(功能篇)
    Android.mk简介:
    win10 mars xlog编译
    sudo apt-get install libstdc++6
    WebRTC 入门教程(二)| WebRTC信令控制与STUN/TURN服务器搭建
    Mars Android 接入指南
    Mars Sample 使用说明
    RxJava2 方法总结
    mqtt client api: 阻塞API
    idea使用git进行项目管理
  • 原文地址:https://www.cnblogs.com/mrblue/p/4962998.html
Copyright © 2011-2022 走看看