Unity自定义Hierarchy面板案例(显示GameObject的InstanceID),以及通过InstanceID找到场景中的对应GameObject

需求

由于之前给服务器导出过.obj文件(类似于导出游戏地图中每个GameObject的某些信息),其中会遇到一个问题,就是如果这些文件中有一些文件有错误,我们如何定位到游戏地图中对应的GameObject。

最简单的就是导出的时候带name信息,然后在Hierarchy面板中搜索对应的name。但是由于一个大地图,可能有成千上万个GameObject,然后美术在制作的时候可能很多都是重复的,利用复制黏贴生成。导致实际上会有很多相同name的GameObject,也不太可能说让美术们一个个改名来保证唯一性。

我们知道GameObject有个InstanceID,可以作为唯一标识,但是这个ID我们在Hierarchy面板中无法直观的看见,这时候就需要我们加点小功能,来实现下面两个功能:

1.在Hierarchy面板中,显示选中的GameObject的InstanceID

2.创建一个自定义窗口,在里面可以通过输入一个InstanceID,来定位到Hierarchy对应的GameObject

效果图如下:

这样我们就可以通过导出文件的时候带上InstanceID属性,当发现某些文件有问题时,通过这些InstanceID来定位出问题的GameObject。

备注:同一个GameObject,gameobject.GetInstanceID() 和 transform.GetInstanceID()不一样,我们需要使用gameobject的instanceid。

 

实现

我们知道Inspector,Scene面板都可以做一些自定义功能,那么我们如何拓展Hierarchy面板呢,通过查找,发现有一个EditorApplication.hierarchyWindowItemOnGUI的API可以帮助我们实现。

这是一个委托方法,HierarchyWindowItemCallback(int instanceID, Rect selectionRect)中两个参数分别是Hier

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值