Студия Roblox Как изменить текст TextLabel в скрипте

Я хочу сделать графический интерфейс, который показывает ваши координаты в игре с текстовыми метками, но мой скрипт, похоже, вообще не изменил текст.

players = game.Players.LocalPlayer
players.CharacterAdded:Wait()
X = math.floor(players.Character.HumanoidRootPart.Position.X)
Y = math.floor(players.Character.HumanoidRootPart.Position.Y)
Z = math.floor(players.Character.HumanoidRootPart.Position.Z)
text = script.Parent.Text
while true do
    text = X..","..Y..","..Z
    X = math.floor(players.Character.HumanoidRootPart.Position.X)
    Y = math.floor(players.Character.HumanoidRootPart.Position.Y)
    Z = math.floor(players.Character.HumanoidRootPart.Position.Z)
end

пожалуйста, помогите мне

Я хотел изменить текст на позицию XYZ в строке но при каждом запуске игры текст не менялся и это все еще текст по умолчанию в текстовой метке roblox ui

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
95
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Так что я вижу, что вы сделали несколько ошибок здесь

Объяснение:

  • Во-первых, players.CharacterAdded:Wait() не всегда работает и никогда не работает в студии. Поэтому вместо этого вы должны использовать players.Character:WaitForChild("HumanoidRootPart").
  • Второе. Вызывая text = script.Parent.Text, вы запрашивали текст внутри него (вы получали его в виде строки), поэтому, чтобы просто исправить это, вы должны использовать text = script.Parent, а затем при изменении текста вам придется использовать text.Text = "your text".
  • Следующий — сделать ваш цикл while бесконечным, используя bool true. Так делать нельзя, иначе проигрыватель может лагать или даже скрипт может вылететь. Поэтому я бы предложил поставить что-то вроде ожидания (0.1).
  • И последнее, что вы должны получить X, Y, Z, прежде чем вставлять это в текст, иначе это будет отложено.

И ваш окончательный сценарий должен выглядеть так:

players = game.Players.LocalPlayer
players.Character:WaitForChild("HumanoidRootPart")
X = math.floor(players.Character.HumanoidRootPart.Position.X)
Y = math.floor(players.Character.HumanoidRootPart.Position.Y)
Z = math.floor(players.Character.HumanoidRootPart.Position.Z)
text = script.Parent
while wait(0.1) do
    X = math.floor(players.Character.HumanoidRootPart.Position.X)
    Y = math.floor(players.Character.HumanoidRootPart.Position.Y)
    Z = math.floor(players.Character.HumanoidRootPart.Position.Z)
    text.Text = X..","..Y..","..Z
end

Продолжайте писать сценарии, без практики ничего не получается,
КубаДК

Этот LocalScript уже находится в PlayerGui, нет никаких гарантий, что модель персонажа игрока существует в момент выполнения этого кода. Это означает, что строка players.Character:WaitForChild("HumanoidRootPart") может вызвать ошибку attempt to index nil with WaitForChild. Достойная проверка безопасности if not player.Character then player.CharacterAdded:Wait() end вверху.

Kylaaa 25.01.2023 23:30

Это работает, спасибо, и это было просто, чтобы узнать, в чем моя проблема, я думаю, что отмечу вас как лучший ответ

xdd 26.01.2023 06:38

Обязательно добавьте проверку безопасности, сделанную Kylaaa

KubaDC 26.01.2023 07:33

Простой ответ на ваш вопрос о том, как изменить текст TextLabel, заключается в том, что вы просто устанавливаете свойство Text.

script.Parent.Text = "Hello World"

Если вам нужен простой способ отслеживать изменение положения персонажа игрока, я бы рекомендовал использовать сигнал Changed на Части. Он будет запускать подключенную функцию каждый раз при изменении свойства и позволяет избежать использования бесконечного цикла while.

local text = script.Parent
local player = game.Players.LocalPlayer

-- wait for the player's character to exist
if not player.Character then
    player.CharacterAdded:Wait()
end

-- listen for changes to the player's position
local hrp = player.Character.HumanoidRootPart
hrp:GetPropertyChangedSignal("Position"):Connect(function()
    local position = hrp.Position
    local x, y, z = math.floor(position.X), math.floor(position.Y), math.floor(position.Z)

    -- format the position, and display it in the TextLabel
    local positionString = string.format("(%d, %d, %d)", x, y, z)
    text.Text = positionString
end)

Это тоже работа, но я не могу понять, как это работает так легко, я думаю

xdd 26.01.2023 06:38

Другие вопросы по теме