为什么 Instantiate 克隆出来的GameObject的Scale 在 SetParent 总是放大 64倍?
2016-02-27 13:25
274 查看
经常会犯一个错误:
在设置了 localScale 之后,又去 SetParent 。然后就出现了 克隆出来的 GameObject 变得无比巨大!
转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn
虽然马上会及时修改,调整 为 先 SetParent 然后再设置 localScale 。
但是经常性的出现这个问题会很难堪,那么到底是为什么会出现这个情况?
一句一句代码来看:
GameObject childNodeClone = Instantiate(childNode) as GameObject;
这里克隆了一个物体,运行这一句发现,克隆的物体出现了在 Hieraychy 的最外层,而且查看 Transform 信息发现,和 源 GameObject上的数据一致。
所以在克隆的时候,Unity 复制了 Transform 的信息,然后把 克隆出来的物体,扔到了世界坐标系中……
克隆出来的GameObject 和 Camera 的 Transform Position 是相同的,两者位于同一个点上,所以看不到克隆出来的 GameObject 。
然后
childNodeClone.transform.SetParent(childNode.transform.parent);
Unity在 SetParent 的时候,就会把克隆出来的 GameObject 从世界坐标系中,平移到 父节点的 局部坐标系中。
注意:这里只有位移,没有缩放!!
因为是从世界坐标系移动到 父节点的局部坐标系中,两个坐标系的尺量不一致。所以要进行转换。
查看 父节点 Canvas_Root 看到,父节点进行了缩放!
那么世界坐标系中的 1 ,在 父节点的局部坐标系中,就相当于 1/0.1562 ,约等于 64 倍。
转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn
所以克隆出来的物体的 Scale 是 64 !
GameObject childNodeClone = Instantiate(childNode) as GameObject; childNodeClone.transform.localScale = childNode.transform.localScale; childNodeClone.transform.SetParent(childNode.transform.parent);
在设置了 localScale 之后,又去 SetParent 。然后就出现了 克隆出来的 GameObject 变得无比巨大!
转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn
虽然马上会及时修改,调整 为 先 SetParent 然后再设置 localScale 。
但是经常性的出现这个问题会很难堪,那么到底是为什么会出现这个情况?
一句一句代码来看:
GameObject childNodeClone = Instantiate(childNode) as GameObject;
这里克隆了一个物体,运行这一句发现,克隆的物体出现了在 Hieraychy 的最外层,而且查看 Transform 信息发现,和 源 GameObject上的数据一致。
所以在克隆的时候,Unity 复制了 Transform 的信息,然后把 克隆出来的物体,扔到了世界坐标系中……
克隆出来的GameObject 和 Camera 的 Transform Position 是相同的,两者位于同一个点上,所以看不到克隆出来的 GameObject 。
然后
childNodeClone.transform.SetParent(childNode.transform.parent);
Unity在 SetParent 的时候,就会把克隆出来的 GameObject 从世界坐标系中,平移到 父节点的 局部坐标系中。
注意:这里只有位移,没有缩放!!
因为是从世界坐标系移动到 父节点的局部坐标系中,两个坐标系的尺量不一致。所以要进行转换。
查看 父节点 Canvas_Root 看到,父节点进行了缩放!
那么世界坐标系中的 1 ,在 父节点的局部坐标系中,就相当于 1/0.1562 ,约等于 64 倍。
转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn
所以克隆出来的物体的 Scale 是 64 !
相关文章推荐
- object对象、伴生类与伴生对象与类的继承实战
- Objective—C通讯录简单编程(源码)
- iOS开发系列--Objective-C之KVC、KVO
- iOS开发系列—Objective-C之内存管理
- 《基于MFC的OpenGL编程》Part3 Drawing Simple 3D objects
- Objective-C 高性能的循环遍历 forin - NSEnumerator - 枚举 优化
- iOS 之 OBJECTC 调用C、OBJECTC调用C++
- iOS开发系列--Objective-C之协议、代码块、分类
- iOS开发系列--Objective-C之类和对象
- Objective-C中的存取方法
- 【值得收藏】线程、事件与QObject
- 推送(本地Local Notification)
- KVO探究
- python TypeError: 'str' object does not support item assignment”
- Object-C文件操作
- Objective-C继承
- Objective-C页面跳转方法总结
- 表单serializeObject问题
- 对Objective-C中runtime的理解
- fastjson包JSONObject.toJSON导致pojo对象部分属性丢失问题