当前位置: 首页 > news >正文

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

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

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

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

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

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

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

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

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

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

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

真是百思不得其解。

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

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

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

2D视图

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

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

原来使用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;

相关文章:

  • CSS相关
  • 2D 3D 工业组态技术 meta2d JavaScript
  • Page分页records有数据,但是total=0,解决办法
  • NET8 ORM 使用AOT SqlSugar
  • 设计模式解码:软件工程架构的航标
  • 线性表的概念
  • 基于模拟退火算法优化概率神经网络PNN的分类预测 - 附代码
  • 如何把小米路由器刷入OpenWRT系统并通过内网穿透工具实现公网远程访问
  • 移动硬盘打不开?正确操作方法分享!
  • 有什么好用的后勤管理软件?学校后勤服务要怎么提升满意度?
  • 【MySQL】聚合函数:汇总、分组数据
  • 谷歌浏览器F12/打开开发者工具网络就无法连接报错
  • webpack的安全保障是怎么做的?
  • 你是想被ChatGPT改变,还是改变软件开发的未来?丨IDCF
  • Difficulty-Aware Glaucoma Classification with Multi-rater Consensus Modeling
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • [译]Python中的类属性与实例属性的区别
  • __proto__ 和 prototype的关系
  • 30天自制操作系统-2
  • Java的Interrupt与线程中断
  • java取消线程实例
  • springMvc学习笔记(2)
  • 大数据与云计算学习:数据分析(二)
  • 当SetTimeout遇到了字符串
  • 分类模型——Logistics Regression
  • 关于字符编码你应该知道的事情
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 技术胖1-4季视频复习— (看视频笔记)
  • 浅谈web中前端模板引擎的使用
  • 详解NodeJs流之一
  • 最简单的无缝轮播
  • Linux权限管理(week1_day5)--技术流ken
  • 阿里云API、SDK和CLI应用实践方案
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 组复制官方翻译九、Group Replication Technical Details
  • ​io --- 处理流的核心工具​
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • %check_box% in rails :coditions={:has_many , :through}
  • (2)(2.10) LTM telemetry
  • (6)设计一个TimeMap
  • (bean配置类的注解开发)学习Spring的第十三天
  • (NSDate) 时间 (time )比较
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • .NET Core 中的路径问题
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET Micro Framework初体验
  • .net 调用php,php 调用.net com组件 --
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .Net6使用WebSocket与前端进行通信
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • [ActionScript][AS3]小小笔记
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作