Unity 编辑模式下自定义快捷控制场景物体的显隐状态

本文介绍了如何在Unity编辑模式下通过编写自定义Editor脚本,利用"Alt + Q"快捷键实现场景中物体的显示与隐藏。通过添加`MenuItem`并设置快捷键,程序员可以更高效地管理场景中的游戏对象状态。
摘要由CSDN通过智能技术生成

在用Unity开发过程中,为了便于观察,我们常常会在编辑模式中,选中并点击物体Inspector面板上acitve的勾,让物体显示或隐藏,作为一名程序员,对快捷操作应该是有追求的,在编辑器类中添加如下代码可以实现 “Atl + Q” 快速显示或隐藏场景物体.

using UnityEngine;
using System.Collections;
using UnityEditor;

public class SetGameObjectActive : Editor

 {


    [MenuItem("Tools/通用工具/切换物体显隐状态 &q")]
    public static void SetObjActive()
    {
        GameObject[] selectObjs = Selection.gameObjects;
        int objCtn = selectObjs.Length;
        for (int i = 0; i < objCtn; i++)
        {
            bool isAcitve = selectObjs[i].activeSelf;
            selectObjs[i].SetActive(!isAcitve);
        }
    }
}



代码很简单,Menultem这个特性相信很多人都会使用,在自定义好的Menultem菜单路径后 加 “空格 + & + 字母” 即可实现自定义快捷键组合。

 其它快捷键参考:
 1.%X : ctrl + X; 
 2.#X : shift + X;
 3.&X : alt + X; 
 4._X :X
 5.%&X: ctrl  + alt + X



Unity中,如果你想要根据自定义属性对子物体进行排序,首先你需要确保你的类有一个静态构造函数,因为Unity在启动时会运行这些静态函数[^1]。以下是一个基本步骤: 1. **定义属性**: - 在你的类上添加一个用于排序的公共属性(如`public float SortOrder`),它将是排序的关键依据。确保这个属性的数据类型支持数值比较,比如`float`。 ```csharp using UnityEngine; using UnityEditor; // 假设你的类名为MyCustomObject [ExecuteInEditMode] public class MyCustomObject : MonoBehaviour { public static float DefaultSortOrder = 0.0f; // 自定义排序默认值 [SerializeField] private float sortOrder; // 添加到Inspector的字段 } ``` 2. **设置静态构造函数**: - 如果你的类没有默认的静态构造函数,可以添加一个,用于初始化默认的排序顺序或者其他必要的设置。 ```csharp static MyCustomObject() { // 设置默认排序顺序 MyCustomObject.DefaultSortOrder = 0.0f; } ``` 3. **排序逻辑**: - 在Update()或其他适当的时机,你可以实现一个函数来按照`sortOrder`属性重新排列子物体。这里假设你有一个`Transform`数组存储子物体。 ```csharp void ReorderChildren() { List<MyCustomObject> objectsToSort = GetComponentsInChildren<MyCustomObject>(); objectsToSort.Sort((a, b) => a.sortOrder.CompareTo(b.sortOrder)); foreach (MyCustomObject obj in objectsToSort) { obj.transform.SetSiblingIndex(Mathf.RoundToInt(obj.sortOrder)); // 设置新排序位置 } } void Update() { if (!Application.isPlaying || !IsPlayingOrWillChangePlaymode()) { ReorderChildren(); // 在编辑模式或非播放模式下执行排序 } } ``` 请注意,在实际应用中,你可能需要调整排序逻辑以满足特定的需求,比如只在某些条件下排序,或者考虑其他的排序算法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值