unity Instantiate实例化物体后出现scale改变

Posted small-transparent

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity Instantiate实例化物体后出现scale改变相关的知识,希望对你有一定的参考价值。

最近在做的东西大部分都要用到instantiate, 实例化某个prefab物体,实例化的物体若没有指定父物体,就会自动生成到根目录下。

这是出现了一个问题,当实例化物体后,更改parent值,这时,实例化物体的scale值会产生相应的改变

有两种解决办法

1、instantiate本身可以有父物体参数  Instantiate<T>(T original, Vector3 position, Quaternion rotation, Transform parent),

这样实例化出来的物体不会出现scale中的改变(因为没有在外部更改父物体,一次性成品,安全

1  Instantiate(twoDPreb, twoDPreb.transform.position, twoDPreb.transform.rotation, this.transform.Find("Panel").transform);

2、如果是实例化后,更改父物体导致scale值更改,也可以在下面更改实例化物体的localScale的值来更改其scale值

1  GameObject obj = Instantiate(twoDPreb, twoDPreb.transform.position, twoDPreb.transform.rotation);
2  obj.transform.SetParent(this.transform.Find("Panel").transform);
3  obj.transform.localScale = new Vector3(1, 1, 1);

 

以上是关于unity Instantiate实例化物体后出现scale改变的主要内容,如果未能解决你的问题,请参考以下文章

关于unity3d中prefabs的问题 初学者

Unity快速入门教程-详解预制体(Prefab)及其实例化Instantiate

unity3D中动态加载物体的常用的方法

unity Instantiate设置父级物体bug

Unity3D怎么让地形中随机出现物体?

为啥我unity3d 用以下代码没有出现球体?