Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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
Unity3d 在unity中更改摄影机视图外部UI面板的位置时,UI面板卡在画布边缘_Unity3d - Fatal编程技术网

Unity3d 在unity中更改摄影机视图外部UI面板的位置时,UI面板卡在画布边缘

Unity3d 在unity中更改摄影机视图外部UI面板的位置时,UI面板卡在画布边缘,unity3d,Unity3d,我已经创建了一个侧菜单面板,它位于画布之外。在画布内按下菜单按钮时,它会通过缓慢进入屏幕(画布)来设置动画。菜单面板内有一个主页按钮。我希望它在不设置动画的情况下回到原始位置。为此,我使用了menupanel.transform.position=newvector3(1080.0f,560.0f,0)。当我点击run并按下home按钮时,它并没有返回到原始位置,而是撞到画布的内侧边缘并向下移动(一半在画布中可见,一半在画布外部)。画布内部和外部的面板都有拉伸锚预设,画布渲染模式为屏幕空间-覆盖

我已经创建了一个侧菜单面板,它位于画布之外。在画布内按下菜单按钮时,它会通过缓慢进入屏幕(画布)来设置动画。菜单面板内有一个主页按钮。我希望它在不设置动画的情况下回到原始位置。为此,我使用了menupanel.transform.position=newvector3(1080.0f,560.0f,0)。当我点击run并按下home按钮时,它并没有返回到原始位置,而是撞到画布的内侧边缘并向下移动(一半在画布中可见,一半在画布外部)。画布内部和外部的面板都有拉伸锚预设,画布渲染模式为屏幕空间-覆盖。我不知道我做错了什么。

首先确保没有播放将面板带入屏幕的动画,有时动画在完全播放后会在最后卡住

UI有rect transform,所以不要使用transform.position,而是使用recttransform.position,类似于

panel.GetComponent().localPosition=Vector3.0


您可以通过以下代码获取并使用RectTransform:

panel.GetComponent<RectTransform>().localPosition = Vector3.zero;
panel.GetComponent().localPosition=Vector3.zero;

请上传你的场景图片并解释你想做什么。但现在,我建议在动画之前和动画之后获取所有东西的位置,使用它返回到第一位。

localPosition将面板保持在原位(不向下移动),但panel.GetComponent().localPosition=Vector3.zero;它不起作用。它应该在画布外移动,但仍在画布内。我试图在动画出现在屏幕上后将其删除,但没有成功。您不应该使用vector3.zero将面板移出屏幕,这只是一个示例。下面是我刚刚在我的机器上测试的完整代码:
使用System.Collections;使用System.Collections.Generic;使用UnityEngine;公共类MoveLeft:MonoBehavior{int offset=202;//在第一帧更新void Start()之前调用Start(){RectTransform myRectTransform=GetComponent();myRectTransform.localPosition+=Vector3.left*offset;}//每帧调用一次更新void update(){}