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);
    }
}
相关推荐
_风华ts7 小时前
虚幻引擎RPC
rpc·游戏引擎·虚幻
claider8 小时前
Vim User Manual 阅读笔记 Usr_05.txt Set your settings 设置你的设置
笔记·编辑器·vim
海棠AI实验室8 小时前
第七章 断点调试:VSCode 调试全流程(含常见坑)
ide·vscode·编辑器
淮北4949 小时前
通过VSCODE下在markdown插件编辑查看
ide·vscode·编辑器
垂葛酒肝汤10 小时前
放置挂机游戏的离线和在线收益unity实现
游戏·unity·c#
孟无岐10 小时前
【Laya】Base64Tool 编码工具类使用说明
typescript·游戏引擎·游戏程序·laya
康de哥10 小时前
在OpenCode中配置unity3d-mcp
unity·glm-4.7·minimax m2.1·opencode·unity3d-mcp
Howrun77711 小时前
虚幻引擎_动画蓝图/混合空间/状态机_超详细教学
游戏引擎·虚幻
多看书少吃饭11 小时前
OnlyOffice 编辑器的实现及使用
前端·vue.js·编辑器