Я хочу сделать графический интерфейс, который показывает ваши координаты в игре с текстовыми метками, но мой скрипт, похоже, вообще не изменил текст.
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
players.CharacterAdded:Wait()
не всегда работает и никогда не работает в студии. Поэтому вместо этого вы должны использовать players.Character:WaitForChild("HumanoidRootPart")
.text = script.Parent.Text
, вы запрашивали текст внутри него (вы получали его в виде строки), поэтому, чтобы просто исправить это, вы должны использовать text = script.Parent
, а затем при изменении текста вам придется использовать text.Text = "your text"
.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
Это работает, спасибо, и это было просто, чтобы узнать, в чем моя проблема, я думаю, что отмечу вас как лучший ответ
Обязательно добавьте проверку безопасности, сделанную Kylaaa
Простой ответ на ваш вопрос о том, как изменить текст 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)
Это тоже работа, но я не могу понять, как это работает так легко, я думаю
Этот LocalScript уже находится в PlayerGui, нет никаких гарантий, что модель персонажа игрока существует в момент выполнения этого кода. Это означает, что строка
players.Character:WaitForChild("HumanoidRootPart")
может вызвать ошибкуattempt to index nil with WaitForChild
. Достойная проверка безопасностиif not player.Character then player.CharacterAdded:Wait() end
вверху.