Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么UI元素角点等于画布角点?_C#_Unity3d - Fatal编程技术网

C# 为什么UI元素角点等于画布角点?

C# 为什么UI元素角点等于画布角点?,c#,unity3d,C#,Unity3d,我正在为Android创建一个肖像模式的Unity游戏。我有一个和显示器一样大的画布,渲染模式设置为屏幕空间-相机。我还有一个蓝色的RawImage(画布的子对象),我在代码中调整了它的大小并重新定位,以满足我的需要。当我必须使用RectTransform的属性获取原始图像的角点时,问题就出现了。结果有点不对劲,我最终发现了问题,那就是即使RawImage被调整大小和重新定位,RawImage的角点与画布的角点相同。请看下图: 我从层次结构中选择了RawImage,目前,RawImage的角点是

我正在为Android创建一个肖像模式的Unity游戏。我有一个和显示器一样大的画布,渲染模式设置为屏幕空间-相机。我还有一个蓝色的RawImage(画布的子对象),我在代码中调整了它的大小并重新定位,以满足我的需要。当我必须使用RectTransform的属性获取原始图像的角点时,问题就出现了。结果有点不对劲,我最终发现了问题,那就是即使RawImage被调整大小和重新定位,RawImage的角点与画布的角点相同。请看下图: 我从层次结构中选择了RawImage,目前,RawImage的角点是红色箭头所指的角点。但我需要的是绿色箭头指向的角落

以下是调整大小和重新定位功能的简化版本:

private void applyResize()
{
    //The values of the Vector2s are the output, in the real function there is a formula that isn't relevant to this question
    myRawImage.GetComponent<RectTransform>().sizeDelta = new Vector2(864, 864);
    myRawImage.GetComponent<RectTransform>().anchoredPosition = new Vector2(0, -1178);
}
private void applyResize()
{
//向量2的值就是输出,在实函数中有一个公式与这个问题无关
myRawImage.GetComponent().sizeDelta=新向量2(864864);
myRawImage.GetComponent().anchoredPosition=newVector2(0,-1178);
}
我确信问题来自上述函数中的两行代码,因为您可以在图像中看到,即使是枢轴也没有改变。我需要找到一种方法使角点适应重新定位和调整大小的原始图像,而不是在它被修改之前。如果需要,我可以提供任何其他信息。我将非常感谢任何帮助。提前谢谢你

更新1:
偏移位置和侧边的值不是固定的,它们是根据我的一些参数和显示大小计算的。问题不在于价值观,它们是正确的。如您所见,从视觉上看,RawImage的大小(864x864)正确,并且在Y轴(-1178)上的位置正确。在Inspector选项卡中,您可以看到原始图像最初放置在显示器的顶部和中心侧。我在运行时修改它的位置和大小。问题是,即使从视觉上看RawImage是正确的,在调用函数之前,锚定和枢轴仍然与原始的保持相同。我需要根据修改后的大小和位置更改原始图像的角点。这里的目标是获得RawImage的右角,因为稍后我需要画一条包含在RawImage中的线,所以我需要正确的坐标。我不知道还有什么其他方法可以实现这一点。

通过将位置从代码更改为固定偏移位置,您到底想要实现什么?通过设置位置,锚定不会改变。为什么要向下移动这个对象,并将其大小更改为864x864(相当大)?您在哪里调用
applyResize
?另外,
GetComponent()
是多余的,
RawImage
已经有了对它的
RectTransform
的引用,所以您可以使用
myRawImage.RectTransform…
@teebkne首先,感谢您的反馈。我知道我在这里做了一些胡说八道的事情,但我仍在学习,因此很多事情对我来说都是新的,比如矩形变换。不管怎样,我用粗体编辑了“更新1”这篇文章,在这里我解释了我试图实现的目标。我知道这可能会让人困惑,但我感谢你的耐心。这是一个我需要参加考试的项目,所以我必须及时完成。你从哪里打电话给我?另外,您希望将图像更改为哪些定位点?改变尺寸和位置不会改变锚点,也不会改变枢轴位置。在移动图像之前或之后,您是否对其执行了其他操作?我相信你混淆了定位和定位。他们是不同的。