C# 创建游戏时,设置对象位置时出错

C# 创建游戏时,设置对象位置时出错,c#,unity3d,C#,Unity3d,这是我的密码 GameObject tocreate = new GameObject ("newsstory1"); tocreate.AddComponent<SpriteRenderer> (); tocreate.GetComponent<SpriteRenderer> ().sprite = newsbuilten; tocreate.transform.parent = notifcationparents.transform;

这是我的密码

GameObject tocreate = new GameObject ("newsstory1");
    tocreate.AddComponent<SpriteRenderer> ();
    tocreate.GetComponent<SpriteRenderer> ().sprite = newsbuilten;

    tocreate.transform.parent = notifcationparents.transform;
    tocreate.transform.localScale = new Vector3 (6, 6, 0);
    tocreate.transform.position = new Vector3 (80, 18 ,5);
gameobjecttocreate=newgameobject(“新闻故事1”);
tocreate.AddComponent();
tocreate.GetComponent().sprite=newsbuilten;
tocreate.transform.parent=notifcationparents.transform;
tocreate.transform.localScale=newvector3(6,6,0);
tocreate.transform.position=新向量3(80,18,5);
我的问题是当我运行这个游戏时,游戏对象处于错误的位置;这是图片


这是正常的。不要担心你在编辑器中看到的位置。这是因为您正在设置父游戏对象

假设父对象(
notifcationparents
)位于以下位置:

5
10
30

然后创建一个名为“newsstory1”的新游戏对象,并将其位置设置为:

80
18
5

新游戏对象将移动到该位置,但您将看到:

75
8
-25


因为这就是(
80
18
5
--
5
10
30
)的含义。你只是看到一个相对于其父游戏对象的位置。如果没有父游戏对象,就不会发生这种情况。

这是正常的。不要担心你在编辑器中看到的位置。这是因为您正在设置父游戏对象

假设父对象(
notifcationparents
)位于以下位置:

5
10
30

然后创建一个名为“newsstory1”的新游戏对象,并将其位置设置为:

80
18
5

新游戏对象将移动到该位置,但您将看到:

75
8
-25


因为这就是(
80
18
5
--
5
10
30
)的含义。你只是看到一个相对于其父游戏对象的位置。如果没有父游戏对象,则不会发生这种情况。

不要使用transform.parent,而是使用transform.SetParent()。
另外,首先设置游戏对象的位置,然后使用transform.SetParent(parent,true)设置其父对象。

不要使用transform.parent,而是使用transform.SetParent()。
另外,首先设置游戏对象的位置,然后使用transform.SetParent(parent,true)设置它的父对象。

位置是相对于transform.parent的。可能?
notificationparents.transform
对象的绝对位置是什么?0,0,0是向量3位置位置相对于
transform.Parents
可能?
notificationparents.transform
对象的绝对位置是什么?0,0,0是向量3的位置