Unity3d 如何使2D碰撞器与它们的UI元素缩放';你一定要去吗?

Unity3d 如何使2D碰撞器与它们的UI元素缩放';你一定要去吗?,unity3d,unityscript,unity3d-2dtools,Unity3d,Unityscript,Unity3d 2dtools,我对Unity还是一个新手,如果能在这个问题上得到任何帮助,我将不胜感激 我有这个设置,使用我设计的屏幕分辨率可以很好地工作。我相信当我改变分辨率时,UI元素可以很好地伸缩,但我刚刚发现我制作的碰撞器(图像中的红线)没有。目前,我正在使用添加到画布的边缘碰撞器。我还尝试向每个面板添加单独的边缘碰撞器。然后我尝试了盒子对撞机。我试着把面板+碰撞器变成预制件。都没有用。我还尝试通过脚本设置边缘碰撞器的点,以便它们始终缠绕在面板上,但我无法获得任何碰撞(注意:我不知道如何显示/渲染此运行时生成的碰撞器

我对Unity还是一个新手,如果能在这个问题上得到任何帮助,我将不胜感激

我有这个设置,使用我设计的屏幕分辨率可以很好地工作。我相信当我改变分辨率时,UI元素可以很好地伸缩,但我刚刚发现我制作的碰撞器(图像中的红线)没有。目前,我正在使用添加到画布的边缘碰撞器。我还尝试向每个面板添加单独的边缘碰撞器。然后我尝试了盒子对撞机。我试着把面板+碰撞器变成预制件。都没有用。我还尝试通过脚本设置边缘碰撞器的点,以便它们始终缠绕在面板上,但我无法获得任何碰撞(注意:我不知道如何显示/渲染此运行时生成的碰撞器,因此我不能完全确定它们是否正是我想要的)

tldr;有人知道如何使碰撞器缩放或环绕绑定到的UI元素吗


所以,碰撞器与UI配合得很好。请记住,碰撞器以单位工作,而画布以像素工作

如果需要将组件大小设置为图像大小,则需要检查用于
画布缩放器上的参数

这意味着,如果你的图像宽度为100px,你需要在对撞机刻度上设置100个单位

这是您需要做的:

gameObject.GetComponent<BoxCollider2D>().size = new Vector2 (
    gameObject.GetComponent<RectTransform>().sizeDelta.x,
    gameObject.GetComponent<RectTransform>().sizeDelta.y
    );
gameObject.GetComponent().size=new Vector2(
gameObject.GetComponent().sizeDelta.x,
gameObject.GetComponent().sizeDelta.y
);

在UI元素中使用碰撞器可能行不通。尝试将collider添加到非UI元素中(画布之外),如果它以不同的分辨率不断变化,则保持其比例它可以工作,但我无法将其缩放。有人还告诉我,UI元素的物理特性通常会导致性能不佳,所以我愿意将它们转换为实际的游戏对象。我只是尝试使用预置,虽然我可以让它们缩放,但我似乎无法使用编辑器锚定它们。我也不知道是否可以通过脚本实现。你的人是对的。好的,当你在2D环境中开发时,你可以很容易地得到屏幕的宽度和高度,所以制作一个单位大小的对象,添加一个框碰撞器2D,检查屏幕的UI比率,例如你的左面板是总宽度的12.5%,所以缩放和定位它,我看到了。所以,通过脚本确实是可行的。但我不能通过编辑器来完成,这对吗?还是我错过了什么?你是对的,你会通过剧本来完成的