Unity 预制体放在场景中可见,通过代码复制出来不可见的处理

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

首先我制作了一个预制体,在场景中是可见的,如下图

unity复制预制体,unity,游戏引擎,c#

无论是Scene视图,还是Game视图都正常。

我把预制体放到Resources里面,然后我通过如下代码复制到同个父物体下。

 GameObject obj1 = Instantiate(Resources.Load("Butcon")) as GameObject;
 obj1.transform.SetParent(tran);
 obj1.transform.localScale = Vector3.one;

代码没有什么问题,我设置好了它的父物体,然后钳制了它的Scale跟原来一样。

还有一点我通过Grid Layout Group钳制了复制的预制体的宽度跟原来一样。如下图,

unity复制预制体,unity,游戏引擎,c#

一切看起来都没有什么问题,然后运行,就出现了如下效果:

unity复制预制体,unity,游戏引擎,c#

Scene视图是正常的,位置正常,但是Game视图却不见了。

这就怪了,我代码设置了父物体,父物体通过Grid Layout Group钳制了宽高,然后可以看到Scene视图是正常的,最主要我场景里什么都没有,就复制一个预制体,所以遮挡也排除了。

然后我检查下是不是摄像头的设置,层级啊,或者渲染什么的因素影响了,我都一一仔细检查确实没什么异样。

真是百思不得其解。

后来我沉下来想,还是应该从摄像头入手。

因为我实际应用中渲染的模式是通过摄像头,问题应该跟摄像头有关。

unity复制预制体,unity,游戏引擎,c#

仔细一看,突然发现由于当时开发的是2D项目,使用的是2D视图,转念一想,是不是应该切换成3D视图看看,会不会发现什么。

unity复制预制体,unity,游戏引擎,c#

2D视图

果然,当我转成3D视图时,一下子就发现了问题所在!

unity复制预制体,unity,游戏引擎,c#

原来复制的UI预制体并没有在摄像头之下。这样一排查就发现即使我用Grid Layout Group钳制了宽高,并且我的预制体的Z坐标是0,但是我通过代码复制出来的Z坐标却变成了-2308.644了。

unity复制预制体,unity,游戏引擎,c#

原来使用Instantiate复制出的物体,它的坐标是会根据某种规律变的,它并不是你预制体本身的坐标复制出来。正如它的Scale也是!

所以当我们使用代码生成物体时,发现异常,首先就要检查下是否创建的时候把Scale和Position都重置一遍。

如使用下面代码再运行程序就正常了:

        GameObject obj1 = Instantiate(Resources.Load("Butcon")) as GameObject;
        obj1.transform.SetParent(tran);
        obj1.transform.localScale = Vector3.one;
        obj1.transform.localPosition = Vector3.zero;

unity复制预制体,unity,游戏引擎,c#文章来源地址https://www.toymoban.com/news/detail-756747.html

到了这里,关于Unity 预制体放在场景中可见,通过代码复制出来不可见的处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Unity如何修改预制体(预制件)?

    【预制件】 预制件作用:方便复用 【预制件】的制作 直接拖拽,从层级面板 - 项目面板。层级面板中当前图标会变蓝,子物体名字变蓝色。预制件是一个文件,可以导出,也方便别人使用。 【预制件】修改 直接修改预制件的属性会影响hierarchy中的游戏对象 直接修改hierar

    2024年04月09日
    浏览(37)
  • 详解Unity预制体和预制体变体(Prefab Variant)

    一、预制体变体的创建 二、预制体与变体的绑定 三、预制体到变体的继承关系 四、变体常见API 五、变体用途 通过一个预制体创建预制体变体可以通过以下两种方法: 1.在需要创建变体的预制体上右键选择图中选项即可在预制体当前目录下创建预制体变体。  2.通过脚本进行

    2024年01月17日
    浏览(40)
  • [unity3D]什么是预制体(Prefab)?如何制作预制体?如何导出预制体?预制体变体是什么?

    将物体转成预制体之后,就可以以此为模板创建非常多个和预制体一模一样的物体了,其实就是复制。在游戏中我们都见过很多一模一样的物体,只是放置的位置或者其他一些参数不太一样,我们不可能一个一个从方块,球开始慢慢建造,所以就出现了预制体,帮助我们减少

    2024年02月02日
    浏览(51)
  • 【Unity入门】21.预制体

        大家好,我是Lampard~~     欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢    (1)什么是预制体     这一章节的博客,我们将会学习一个预制体的概念。什么是预制体呢?     Unity 的预制体是可重复使用的游戏对象组合,是一种 将游戏对象组合成一个整

    2024年02月04日
    浏览(70)
  • Unity -- 预制体与变体

     1.一个游戏物体的图标为蓝色的时候,表明这个游戏物体是通过预制体创建的 当我们在修改预制体的时候,通过预制体创建的游戏物体也会同步修改(给预制体添加组件的时候,通过预制体创建的游戏对象也会添加对应的组件) 而当我们修改通过预制体创建的游戏物体时,

    2023年04月27日
    浏览(34)
  • unity加载prefab预制体

    在一个项目中会有很多生成预制体的情况,就可以写一个专门生成预制体的脚本,然后把预 制体存在Resources资源文件夹 中,只用传参数,参数为要生成的预制体的路径就可以了。 下面是生成UI预制体,需要转换一下位置, 把Transform转换成RectTransform 。 注意创建的类和函数都

    2024年02月19日
    浏览(44)
  • 详解Unity中的预制体

    在Unity中,预制体的作用是重复利用资源,比如游戏世界的花草树木、房屋建筑。这些资源都是重复出现的,我们可以将它做成预制体,方便重复利用。预制体也分原始预制体和变体,本篇我们就来说说它们的区别。 前排提醒:本文仅代表个人观点,以供交流学习,若有不同

    2024年01月17日
    浏览(42)
  • Unity预制体和预设

    一直以为预设就是Prefab。查看官方文档,才知道预设的含义 预设 - Unity 手册 (unity3d.com)     预制体(Prefabs)在unity3d中用的比较多。相当于一个模板。我把它当作是一个在代码未运行就创建好的一个物体,我们可以在代码里重复引用它,这样相当于实现了物体的多用。    

    2024年02月09日
    浏览(44)
  • Unity创建预制体保持关联

    在编辑器状态下,创建预制体并保持关联,方便修改预制体,代码创建出来的物体能同时改变。 这个真是的太不容易。本身创建预制体的代码很简单。 创建出来的资源是和原预制体是关联的,并且可以修改里面的属性。 但是 如果你是直接在Project中选择的预制体的话,下面

    2024年02月07日
    浏览(54)
  • 【Unity 3D 从入门到实践】Unity 3D 预制体

    目录 一,预制体介绍 二,创建预制体 三,实例化预制体 预制体是 Unity 3D 提供的保存游戏对象组件和属性的方法,通过预制体可以快速的实例化挂载不同组件的游戏对象,从而减少开发难度,提高资源的利用率和开发效率。 预制体是 Unity 中非常重要的概念,可以理解为一个

    2024年01月25日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包