Unity获取场景中所有根物体

这篇具有很好参考价值的文章主要介绍了Unity获取场景中所有根物体。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        每个物体都属于一个Scene,而通过Scene.GetRootGameObjects()接口就可以获得该Scene的所有根物体,我们只需要遍历所有Scene即可

List<GameObject> roots = new List<GameObject>();
for (int i = 0; i < SceneManager.sceneCount; i++)
{
    var scene = SceneManager.GetSceneAt(i);
    if (!scene.isLoaded) continue;
    
    roots.AddRange(scene.GetRootGameObjects());
}

        而被DontDestroyOnLoad处理过的物体就不再属于原来的场景了,它们被分配到一个隐藏的叫做DontDestroyOnLoad的新场景里。这个场景无法通过SceneMananger找到,但是我们可以曲线救国,准备一个已经被DontDestroyOnLoad的物体,然后通过接口GameObject.scene即可获取该场景了

foreach (var go in dontDestoryGo.scene.GetRootGameObjects())
{
    // 注意该场景里经常会有各种隐藏物体,把它们屏蔽掉
    if ((go.hideFlags & HideFlags.HideInHierarchy) == 0)
    {
        roots.Add(go);
    }
}

上面两部分结合起来,就能拿到与Hierarchy一致的所有根物体了文章来源地址https://www.toymoban.com/news/detail-510744.html

到了这里,关于Unity获取场景中所有根物体的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity 中检测射线穿过的所有的物体

     在开发中 有个需求,射线要检测所有穿过的物体。 代码如下:   运行结果  

    2024年02月14日
    浏览(37)
  • Unity场景物体动态合批

    1)Unity场景物体动态合批 ​2)Unity内置音频Android平台播放延迟问题 3)对Unity Package中的Shader打包避免冗余的方案 4)UnityEditor PropertyField并排显示错误 这是第307篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读

    2024年02月08日
    浏览(42)
  • unity场景出现粉色物体解决

    小白,美术生学特效。帖子不专业,希望能解决你的问题。 问题:在包管理器里删除了shadergraph,又重新安装,原有的特效都变成粉色了。 解决方法: 1,选中shader,edit-renderpipeline-urp-upgrade project materials to urp materials 2,1选项无用,改shader,并编辑节点编辑器(我不会,放弃

    2024年02月11日
    浏览(57)
  • unity点击场景内物体进行交互

    提示:本文展示点击事件,另有其他自行研究 前言 一、原理 二、使用步骤 1.使用前提 2.使用脚本 总结 很多情况下我们需要对场景内的物体进行交互,今天我们采用射线检测的方法进行点击。 例如:点击场景内的Cube 进行开始旋转 提示:以下是本篇文章正文内容,下面案例

    2024年02月11日
    浏览(63)
  • Unity中查找场景中物体的方法

    unity中查找物体的方法一共分为四种 在代码中定义后直接拖拽上去即可识别 第一步先设置Tag:(可以通过Add Tag添加自己需要的标签) ps:本人在校大学生一枚,单纯写自己学习unity的经验分享,文章内容如有错误,希望各位指正!🙏🏼🙏🏼

    2024年02月11日
    浏览(35)
  • 笔记:Unity多相机场景下,物体显示常用设置

    1、主相机:MainCamera; 2、子相机:ClippingCamera、FieldViewCamera、UICamera: 注:为了减少干扰 每个子相机仅显示特定物体,不和主相机同时渲染; 每个物体也仅被唯一的相机渲染; 3、把子相机显示内容按不同先后顺序渲染到主相机里方法: (1)将子相机添加进MainCamera的Stack模

    2023年04月08日
    浏览(37)
  • Unity 获取物体的子物体的方法

    Unity 中要获取物体的子物体,可以使用以下一些方法。 1、只获取一级节点的子物体: 使用该方法只会获取物体中一级节点的子物体。 2、获取物体的所有节点的子物体,使用GetComponentsInChildren方法: 使用上面方法可以获取物体中所有节点的子物体,但它会包括该物体本身。

    2024年02月05日
    浏览(42)
  • unity 之 如何获取父物体与子物体

    在Unity中,你可以使用 Transform 组件的属性来获取对象的父物体。以下是在C#脚本中如何获取父物体的示例代码: 在这个示例中, transform 代表当前脚本所附着的物体的Transform组件。通过访问 transform.parent 属性,你可以获取当前物体的父物体。如果当前物体没有父物体(例如是

    2024年02月07日
    浏览(33)
  • Unity3D-场景中3D物体添加点击事件

    Unity3D - 场景中3D物体添加鼠标点击事件 鼠标点击3D物体触发,Unity从本质上来说有两种:一种是通过事件(event)触发,一种是通过射线(ray)判断穿过的物体触发。这两种触发的原理是不同的,不论哪种触发都必须满足触发的要求才可以,既然原理不同,触发的要求也不一样

    2024年02月08日
    浏览(74)
  • 使用DoTween插件在Unity中实现物体或场景的振动效果

    在Unity中,我们可以使用DoTween插件来实现物体或场景的振动效果。DoTween是一个功能强大的插件,可以简化动画的创建和管理过程,并提供了丰富的插值和缓动函数,使得振动效果的实现变得更加容易。 首先,我们需要确保已经安装了DoTween插件,并将其导入到Unity项目中。接

    2024年04月17日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包