【问题标题】:Size of prefab when spawning in panel is too small在面板中生成时预制件的尺寸太小
【发布时间】:2019-04-05 21:00:53
【问题描述】:

我在面板中生成预制件,但它的大小像点一样太小,但是当我在面板外生成它时没有问题。请检查下面的图像和代码

public class RedKeyShapeSpawn : MonoBehaviour
{
    public GameObject redshapes;

    void Start()
    {
        GameObject redkeychild1 = Instantiate(redshapes, transform.position, 
transform.rotation) as GameObject; 
        redkeychild1.transform.SetParent(GameObject.FindGameObjectWithTag
("ShapePanel").transform, false);

    }


    void Update()
    {

    }
}

RedKeyShapeSpawn 脚本附加到 RedKey1spawn 对象

【问题讨论】:

  • 您是否尝试将其直接生成为面板的子项? GameObject redkeychild1 = Instantiate(redshapes, transform.position, transform.rotation, GameObject.FindGameObjectWithTag ("ShapePanel").transform); 否则尝试在SetParent 中制作最后一个参数true
  • @derHugo 尝试了您的代码,但仍然相同,如果我将参数设置为 true,则预制件会退出屏幕。

标签: c# unity3d


【解决方案1】:

问题是当您在面板内生成对象时,它将继承父位置并将其用作参考(x、y 和 z 是相对的)。 例如,如果您的面板位于原点 (0,0,0) 中,或者您在代码中设置了绝对位置,您应该能够解决此问题。

PS。旋转和缩放也一样

【讨论】:

    【解决方案2】:

    这个问题的罪魁祸首可能是ShapePanel 的转换。如果该对象的变换不是 1x1x1,则作为面板的子对象添加的任何对象都会受到它的影响。

    考虑使预制件成为面板的子级,并相应地重新调整它。然后,当您生成预制件并将其添加为面板的子项时,RedKey 的比例应该与您预期的一样。

    【讨论】:

    • 没用。我尝试添加这个 redkeychild1.transform.localScale = new Vector3(1,1,1);但还是不行
    • @Newboy11 你可能需要删除你的预制件并重新制作它。删除当前的预制件,在检查器中添加一个新的RedKey 作为ShapePanel 的子级,相应地调整大小,然后在它还是一个子级时将其设为预制件。之后,您应该可以将其从检查器中删除。当您生成预制件时,以 ShapePanel 作为父级生成它
    猜你喜欢
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 2018-12-28
    相关资源
    最近更新 更多