U3D自定义

版权声明:大家好,我是笨笨,笨笨的笨,笨笨的笨,转载请注明出处,谢谢! https://blog.csdn.net/jx520/article/details/83341923
using UnityEngine;
using UnityEditor;  //需要引入这个,还有这个脚本要放在Editor文件夹里才会生效
using System;
//ScriptableObject 这个可以不用挂在物体上
public class Jerry_custom : ScriptableObject
{
	// 这个字符串是在菜单栏里新建了一个Custom,点开后Useful Tool 然后是[color=#008ef1][color=#000000]EnableDisable Multi,%#h 代表的是ctrl+shift+h 快捷键组合[/color][/color]
	public const string MENU_DISABLE_MULTI_GAMEOBJ = "Custom/Useful Tool/Enable or Disable Multi GameObj %#d";//这个是设置选中物体及其子物体的激活状态
	public static void EnableODisableChildNote (Transform parent, bool enable)
	{
		parent.gameObject.active = enable;
		for (int i = 0; i < parent.childCount; i++) {
			Transform child = parent.GetChild (i);
			if (child.childCount != 0) {
				EnableODisableChildNote (child, enable);
			} else {
				child.gameObject.active = enable;
			}
		}
	}
	//这个是设置这个命令什么时候可用,只有在选中一个gameobject的时候,这个命令才会生效,也就是只有选中一个或多个物体的时候快捷键才会起作用
	[MenuItem(MENU_DISABLE_MULTI_GAMEOBJ, true)]
	static bool ValidateSelectEnableODisable ()
	{
		GameObject[] gos = GetMultiSelectedGameObject () as GameObject[];
		if (gos == null) {
			return false;
		}
		if (gos.Length == 0) {
			return false;
		}
		return true;
	}
	//这个就是执行命令的函数了,找到选中的物体,及其所有子物体,然后设置他们的激活状态,
	[MenuItem(MENU_DISABLE_MULTI_GAMEOBJ)]
	static void SelectEnableODisable ()
	{
		GameObject[] gos = GetMultiSelectedGameObject () as GameObject[];
		//        Undo.RegisterUndo (gos, "EnableODisable GameObject");
		bool enable = !gos [0].active;
		foreach (GameObject go in gos) {
			EnableODisableChildNote (go.transform, enable);
		}
	}
	//返回选中的gameobject
	static GameObject[] GetMultiSelectedGameObject ()
	{
		return Selection.gameObjects;
	}


}

猜你喜欢

转载自blog.csdn.net/jx520/article/details/83341923
今日推荐