Unity编辑器功能Inspector快捷自动填充数据和可视化调试

我们有时候可能需要在面板增加一些引用,可能添加脚本后要手动拖动,这样如果有大量的脚本拖动也是不小的工作量

实例

例如:我的脚本需要添加一个Bone的列表,一个个拖动很麻烦。

实现脚本

我们可以用这样的脚本来实现。

csharp 复制代码
public class FingerDyBone : MonoBehaviour
{
    public DynamicBoneCollider[] boneArray = null;

#if UNITY_EDITOR
   
    [ContextMenu("加入所有碰撞体")]
    private void MenuAddBone()
    {
        boneArray = GetComponentsInChildren<DynamicBoneCollider>();
        UnityEditor.EditorUtility.SetDirty(this);
    }
    void OnValidate()
    {
        Debug.Log("OnValidate");
        if (boneArray == null) MenuAddBone();
    }
#endif
}

ContextMenu是菜单,添加这个可以手动调用函数。

如果手动麻烦还可以自动添加,那么可以借助OnValidate函数,在添加脚本或者改变属性的时候会自动执行。解决这个原理就可以在添加脚本的时候自动添加。

最终效果

那么这样就比较事半功倍了。

调试显示

我们还可以通过OnDrawGizmos显示一些常用的图形

例如:

通过OnDrawGizmos方法,使用Gizmos画各种图形

csharp 复制代码
 void OnDrawGizmos()
{
    Transform[] bornPoint = GetComponentsInChildren<Transform>();
    for (int i = 0; i < bornPoint.Length; i++)
    {
        Gizmos.color = Color.yellow;
        Gizmos.DrawWireSphere(bornPoint[i].position, 0.15f);
        Gizmos.color = Color.white;
        Gizmos.DrawLine(bornPoint[i].position, bornPoint[i].position + Vector3.up);
        Gizmos.color = Color.blue;
        Gizmos.DrawLine(bornPoint[i].position, bornPoint[i].position + Quaternion.Euler(bornPoint[i].eulerAngles) * Vector3.forward * 0.5f);
    }
}
相关推荐
一步一个foot-print2 小时前
[Unity Shader Base] RayMarching in Cloud Rendering
unity·游戏引擎
ithinking1103 小时前
kotlin 集成 unity
unity·android studio
立刀人7 小时前
关于Unity 轴心点 Pivot、锚点 Anchor和控制轴
unity·游戏引擎
Hody911 天前
【XR开发系列】Unity第一印象:编辑器界面功能布局介绍(六大功能区域介绍)
unity·编辑器·xr
Lucky小小吴1 天前
各大编码编辑器的缓存目录迁移到D盘【未完待续】
缓存·编辑器
言6661 天前
vscode 设置中文-语言
ide·vscode·编辑器
lrh30251 天前
Custom SRP - 14 Multiple Cameras
unity·渲染管线·srp
天天向上10242 天前
markdown及vscode中可以的emoji
ide·vscode·编辑器
IT利刃出鞘2 天前
WordPress插件--Markdown编辑器
编辑器
AA陈超2 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P07-11 实现自动运行
c++·游戏·ue5·游戏引擎·虚幻