[Unity工具]查找GameObject在场景中所有被引用的地方
参考链接:
https://blog.csdn.net/hjzyzr/article/details/53316919?utm_source=blogxgwz4
https://blog.csdn.net/weixin_39706943/article/details/80507276
0.场景如下:

1.获取场景中所有的Go,包括嵌套的,隐藏的。需要注意的是要进行go.scene.name != null,这句判断,否则会包含很多来自其他地方的go(不只是来自Project视图)
using UnityEngine;
using UnityEditor; /// <summary>
/// 查找GameObject在场景中所有被引用的地方
/// </summary>
public class FindGoInScene { [MenuItem("GameObject/FindGoInScene", priority = )]
static void Init()
{
GameObject[] goes = Resources.FindObjectsOfTypeAll<GameObject>();
for (int i = ; i < goes.Length; i++)
{
GameObject go = goes[i];
if (go.scene.name != null)
{
Debug.Log(go.name);
}
}
}
}
输出如下:

2.查找引用
TestFindGoInScene.cs
using UnityEngine;
public class TestFindGoInScene : MonoBehaviour {
public GameObject temp;
}
FindGoInScene.cs
using UnityEngine;
using UnityEditor;
using System.Reflection; /// <summary>
/// 查找GameObject在场景中所有被引用的地方
/// </summary>
public class FindGoInScene { [MenuItem("GameObject/FindGoInScene", priority = )]
static void Init()
{
GameObject[] goes = Resources.FindObjectsOfTypeAll<GameObject>();
for (int i = ; i < goes.Length; i++)
{
GameObject go = goes[i];
if (go.scene.name != null)
{
if (go != Selection.activeGameObject)
{
//Debug.Log(go.name);
Find(go);
}
}
}
} static void Find(GameObject go)
{
Component[] components = go.GetComponents<Component>();
for (int i = ; i < components.Length; i++)
{
Component component = components[i];
FieldInfo[] fields = component.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance);
for (int j = ; j < fields.Length; j++)
{
var value = fields[j].GetValue(component);
if (value == (object)Selection.activeGameObject)
{
Debug.LogWarning(go.name);
}
}
}
}
}
输出如下:

[Unity工具]查找GameObject在场景中所有被引用的地方的更多相关文章
- unity 查找脚本被场景中哪些对象引用
在需要查找的脚本上右键: 在场景中已经显示出所有引用该脚本的对象
- 在unity中用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放
在场景中添加一个Plan,Camera,Directional Light,Cube.添加两个脚本scrollerScirpt(挂在Camera),CubeDragScript(挂在Cube上). 1 ...
- eclipse中查找类、方法及变量被引用的地方
1.选中要查看的类.方法或变量,然后Ctrl+Shift+G或右键-->References--->Project,就可以找到它所有被引用的地方. 2.对于方法,还可以通过右键--> ...
- Unity查找子物体的方式-怎么查找GameObject
Unity动态查找物体 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创 ...
- unity NGUI点击消息不传入到场景中去
unity NGUI点击消息不传入到场景中去 1.今天遇到的问题是点击NGUI的按钮,场景中也相应了这个消息 解决的办法是在场景中需要互动的时候,也就是在update中进行判断 是否是点击了NGUI按 ...
- 使用Unity中的Box Collider组件完成游戏场景中的碰撞检测功能
一.介绍 目的:通过Unity自带的组件完成游戏场景中的碰撞检测功能. 软件环境:Unity 2017.3.0f3 二.实现过程 1,在面板中点击Add Component按钮 2,添加Box Col ...
- 在Unity场景中更改天空盒的步骤
一.介绍 目的:在Unity场景中制作一个天空盒. 软件环境:Unity 2017.3.0f3,VS2013. 参考 skybox 二.自制一个天空盒 1,创建一个材质material 2,更改属性为 ...
- 在Unity场景中控制日夜的轮转
一.介绍 目的:通过在Unity场景中添加C#脚本完成日夜轮转的效果. 软件环境:Unity 2017.3.0f3,VS2013 二.操作过程 通过拖拽场景中的Directional Light我们知 ...
- untiy3d小工具——修改scene与prefab中的sprite
坑1:因为替换图片要获取所有包含image的组件,开始我使用的是gameobject.getComponents<Image>()和FindObjectsOfType<Image&g ...
随机推荐
- 使用Docker Compose部署基于Sentinel的高可用Redis集群
使用Docker Compose部署基于Sentinel的高可用Redis集群 https://yq.aliyun.com/articles/57953 Docker系列之(五):使用Docker C ...
- 【java_需阅读】Java中static关键字用法总结
1. 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · 它 ...
- pandas初识
pandas初识 1.生成DataFrame型的数据 import pandas as pd import numpy as np dates = pd.date_range('20130101',p ...
- Feign api调用方式
Feign使用简介 基本用法 基本的使用如下所示,一个对于canonical Retrofit sample的适配. interface GitHub { // RequestLine注解声明请求方法 ...
- 透过CAT,来看分布式实时监控系统的设计与实现
2011年底,我加入大众点评网,出于很偶然的机会,决定开发CAT,为各个业务线打造分布式实时监控系统,CAT的核心概念源自eBay闭源系统CAL----eBay的几大法宝之一. 在当今互联网时代,业务 ...
- Java工程师 必须掌握的知识点
Web核心:XML.HTTP及Tomcat.Servlet.request与response.cookie与session.jsp技术.jdbc高级.Ajax开发.Filter/Listener高级. ...
- 将OpenVZ系统硬盘从200G升级到400G
平时习惯性动作df了一下,结果发现...... ‘ 200G的磁盘空间快满了(99%),只剩下2G多了. 索性一下加到400G空间 目前为止很顺利. 但是OpenVZ这台需要关机再开机才行. 重新开机 ...
- SwipeRefreshLayout 和RecyclerView 使用
使用是布局 <android.support.v4.widget.SwipeRefreshLayout android:id="@id/id_swiperefreshlayout&qu ...
- centos6.8下pptp客户端的安装配置
原文: https://blog.csdn.net/zhang11321132/article/details/20612473 yum -y install ppp pptp pptp-setup ...
- 电脑不能上网win7 解决办法
情况一览: 电脑连的是WIFI 手机能上,局域网其他电脑能上 电脑浏览器打不开网页 问题解决: //win+R 快捷键进入cmd 1.ipconfig 看电脑有没有ip 2.ipconfig nslo ...