我在 Unity 中有一个 UI,我不断地将项目从一个地方移动到另一个地方。
其中一些项目是容器,我决定给每个容器自己的子游戏对象,表示并包含打开后的实际容器的内容(也就是激活游戏对象)。我选择这样做是为了更容易跟踪每个容器的实际容器。
我想要什么:更改项目的父项时(又名移动它,因为我所有的父母都有布局组),子游戏对象应该保持在相同的世界位置
我所拥有的:更改项目的父项时,子游戏对象会更改世界位置
我能做什么:我可以每次重置子游戏对象的位置,就像我第一次使用此代码实例化游戏对象时所做的一样(相关游戏对象被拉伸)
Vector3[] corners = new Vector3[4];
transform.parent.parent.GetComponent<RectTransform>().GetWorldCorners(corners);
float width = corners[2].x - corners[0].x;
float height = corners[1].y - corners[0].y;
RectTransform itemTransform = item.transform.GetChild(1).GetComponent<RectTransform>();
itemTransform.position = new Vector3(width / 2, height / 2);
我想知道的是:Monobehavior 或 Unity 中是否有一些东西可以防止子游戏对象移动
在这里,我的房间里有一个名为“sac a dos”的袋子
现在我打开了袋子,它出现在屏幕中间
我现在在同一个地方创建了一个名为“Coffre”的胸部物品,导致袋子被放置为胸部容器子游戏对象的子项
在这里,我打开了箱子,定位在正确的位置,并显示了作为箱子容器子游戏对象的子项放置的包
这里我打开了胸部的包,由于包的位置发生了变化,导致包的子游戏对象放错了位置