Итак, я использую C# в единстве, чтобы поместить некоторые объекты с использованием Unity UI, и у меня есть объект, положение которого в скрипте не совпадает с его положением в сцене. У меня есть следующий код в функции:Unity UI Позиция RectTransform для меня не имеет смысла
using UnityEngine;
using System.Collections;
public class SeedChecker : MonoBehaviour {
Vector3 lockedPos;
RectTransform tran;
// Use this for initialization
void Awake() {
tran = GetComponent<RectTransform>();
}
public void LockPos(Vector3 pos) {
tran.localPosition = pos;
lockedPos = pos;
print (tran.localPosition);
}
}
В качестве примера, этот код печатает, что его позиция является й -60 - что правильное число, которое я ищу - 60 пикселей влево от середины экрана. Но, когда я смотрю в инспектор и на сцене, позиция x равна 0 - и объект расположен точно в середине экрана. Это приводит к довольно неприятной ситуации, в которой у меня также есть talked about here. Это расстраивает, потому что говорит, что он получает правильное положение, но когда я назначаю эту правильную позицию объекту, он переходит к тому, что я считаю неправильным местом. Это непонимание того, как локальные объекты работают в RectTransforms? Мой объект является дочерним элементом нескольких объектов, но все они обнуляются в центре экрана и имеют «1» для значений шкалы.
Этот код работает нормально, я пробовал его, и я получаю Lockpos, который я отправляю. Вы прикрепляете холст с якорем? – joreldraw