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# 雷克特沃恩';t位置_C#_Unity3d_Unity Ui - Fatal编程技术网

C# 雷克特沃恩';t位置

C# 雷克特沃恩';t位置,c#,unity3d,unity-ui,C#,Unity3d,Unity Ui,我正在尝试移动一个RectTransform,它是在单击UI对象时触发的。当我在Update、LateUpdate或动画中设置位置时,RectTransform会按预期移动。当我尝试在OnClick回调中设置position/anchoredPosition/etc时,什么都没有发生(当我查询变量时,变量是不变的) 我有以下游戏板层次结构: 屏幕空间覆盖模式下的画布(全尺寸) 容器:RectTransform对象 MoveObj:具有矩形变换和画布渲染器的游戏对象 容器矩形: M

我正在尝试移动一个RectTransform,它是在单击UI对象时触发的。当我在Update、LateUpdate或动画中设置位置时,RectTransform会按预期移动。当我尝试在OnClick回调中设置position/anchoredPosition/etc时,什么都没有发生(当我查询变量时,变量是不变的)

我有以下游戏板层次结构:

屏幕空间覆盖模式下的画布(全尺寸)

  • 容器:RectTransform对象
    • MoveObj:具有矩形变换和画布渲染器的游戏对象

容器矩形:

MoveObj-Rect:

我正在尝试将MoveObjs移动到根画布的中心,同时将容器作为父对象进行维护。我试过设置position、localPosition、anchoredPosition,但它们什么都不做。设置该属性后,当我查询它时,值没有更改

    public void OnPointerClick(PointerEventData eventData)
    {
        Debug.Log($"{this.gameObject.name} - OnPointerClick - state:{this._state}");
        (transform as RectTransform).position = offsetMaxTarget; // :(
        (transform as RectTransform).localPosition = offsetMaxTarget; // :(
        (transform as RectTransform).offsetMin = offsetMinTarget; // :(
        (transform as RectTransform).offsetMax = offsetMaxTarget; // :(
        (transform as RectTransform).anchoredPosition = targetPosition; // :(
    }
SetInsertAndSizeFromparentEdge确实更改rect的大小,但根本不移动位置

(transform as RectTransform).SetInsetAndSizeFromParentEdge(RectTransform.Edge.Bottom, 450.0f, 150.0f);
MoveObj是从预置中实例化的:

GameObject newMoveObj = Instantiate(MoveObjPrefab, 
    new Vector3(Container.transform.position.x, Container.transform.position.y, 2), 
    Quaternion.identity, 
    Container.transform);
newMoveObj.transform.localPosition = new Vector3(0, 0, 2);
如果我使用动画制作工具,并设置anchoredPosition和position属性的动画,则对象将完全按照我所希望的方式移动


我在代码中设置的唯一有效属性是,如果我设置轴,它实际上会移动。现在这一切都很好,但我发现的大多数信息表明,移动位置至少应该做点什么,动画的成功让我认为这是正确的方法。在我发疯之前,为什么定位在事件处理程序中设置不正确,但在更新中确实有效?

我找到了一个解决方案,尽管我不理解它

动画始终处于空闲状态,没有运动,因为我从未设置触发器。下一个州确实有运动,改变了位置。我从animator图形中删除了所有状态,现在可以通过所有常规方法设置位置


我不明白为什么没有运动的状态仍然会将位置重置为默认值,但是。。。继续,我猜。

它是移动到错误的位置还是根本不移动?根本不移动。这很奇怪。你使用的是哪个版本的Unity,因为这听起来像是一个核心引擎错误。2017.2.Hmm版。我使用的是同一个版本,但我没有这个问题。