У меня проблемы с функцией, которая должна проверять, является ли строка нулевой, пустой или имеет в ней что-то, а затем показать / скрыть элемент пользовательского интерфейса (перемещая его на экран / выключая). Я не хочу использовать SetActive
, потому что в будущем я добавляю слайд на экранную анимацию. Это решило бы проблему на данный момент, но мне нужно было бы вернуться к ней позже.
Я проверил свою логику, комментируя вещи и публикуя их в журнале отладки, и это все кажется нормальным, так что этоопределенно что-то не так с тем, как я использую Vector3
и transform.position
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using UnityEngine.UI;
public class GameManager : MonoBehaviour
{
[SerializeField]
private GameObject _narrationBar;
private void NarrationBarShow(string NarrationTextString)
{
bool testString = string.IsNullOrEmpty(NarrationTextString);
if (testString == true)
{
Debug.Log("String is empty or null");
Transform gObject = _narrationBar.GetComponent<Transform>();
if (gObject.position.y > -10f == true)
{
gObject.Translate(Vector3.down * _speedUIMove * Time.deltaTime);
}
}
else if (testString == false)
{
Debug.Log("String has stuff in it");
Transform gObject = _narrationBar.GetComponent<Transform>();
Vector3 defaultPos = gObject.position;
defaultPos.y = -9.508f;
gObject.position = defaultPos;
}
}
}
Преобразование добавляет значение y к текущей позиции преобразования, а не устанавливает его напрямую (таким образом, оно заканчивается на 2 * -9,508)