c# - 枚举舞台上的所有对象 - 统一
问题描述
我没有在团结方面做一场伟大的比赛。我想做一个保存功能。它将起作用,以便当您单击按钮时,将记录统一的每个对象,以及它的位置脚本等。但我不明白如何整理舞台上的所有物品,希望在座的人能帮助我。文字可能有错误,我用谷歌翻译。
解决方案
您可以通过以下方式获取场景中的所有对象并遍历它们以找到所需的数据:
//GameObject[] allGameObjects = FindObjectsOfType<GameObject>(); // Ignore this as per derHugo's comment, use the line below
GameObject[] allGameObjects = SceneManager.GetActiveScene().GetRootGameObjects();
foreach (GameObject go in allGameObjects)
{
Debug.Log("Name: " + go.name);
Component[] components = go.GetComponents<Component>();
foreach (Component comp in components)
{
Debug.Log("Component: " + comp.GetType());
}
}
编辑: 正如 derHugo 在对此答案的评论中指出的那样,使用 FindObjectsOfType 只会返回活动的游戏对象,所以我修改了答案。您还需要添加using UnityEngine.SceneManagement;
如果要将对象保存在其他场景中,您可以使用SceneManager 类的其他方法和属性按名称或索引定位它们
推荐阅读
- java - javafx重新计算父/节点边界时如何修复IndexOutOfBounds异常
- python - 对数据框进行操作以将行转换为单独的列
- django - 将列表值从 django 模板发送到 django 视图
- unity3d - 如何解决“统一 AR 项目中的重力问题”
- bash - 填充csv的列
- javascript - 尝试使用签名方法将文件上传到 S3 时如何修复“SignatureDoesNotMatch”错误
- java - 如何在像 FB Messenger 这样的 android 中“自动更改”状态栏文本颜色?
- c# - 如何修复 Vector2.Distance() 方法?
- javascript - 如何反转 d3 色带 d3-scale-chromatic d3.interpolateViridis
- redirect - Zentyal:将某些外部域的某些 DNS 条目覆盖为内部 ip