【发布时间】:2020-08-22 21:56:11
【问题描述】:
我在 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”的箱子物品,将包作为箱子的容器子游戏对象的子项放置
在这里,我打开了箱子,定位在正确的位置,并显示了作为箱子容器子游戏对象的子项放置的包
这里我打开了箱子里的包,导致包的子游戏对象放错了位置,因为包的位置发生了变化
【问题讨论】:
标签: c# unity3d user-interface unity-ui