2016-02-28 6 views
-2

Я пытался сделать графический интерфейс, как учебник roblox here.Сценарий не запущен

И он работает, когда я тестирую его в студии, но не тогда, когда я нажимаю на play game и присоединяюсь к моему персонажу.

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

unitFrame.Avatar.Image = "http://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&username="..player.Name 
unitFrame.PlayerName.Text = player.Name 

local healthBar = unitFrame.HealthBarContainer.HealthBar 
player.CharacterAdded:connect(function(character) 
    local humanoid = character:WaitForChild('Humanoid') 
    humanoid.HealthChanged:connect(function(health) 
     local healthPercentage = health/character.Humanoid.MaxHealth 
     healthBar.Size = UDim2.new(healthPercentage, 0, 1, 0) 
    end) 
end) 


local StarterGui = game:GetService('StarterGui') 
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Health, false) 

ответ

0

Убедитесь, что сценарий является localscript. При тестировании в студии скрипты часто работают в студии, но не на сервере.

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

+0

Да, это локальный скрипт. Я нажал f9, и в журнале сервера он сказал, что содержимое не удалось, потому что http 404 (http/1.1 301 постоянно перемещается) - Спасибо – AskingEverythingForCode

0

Включить HttpEnabled. ROBLOX не может подключиться к своим серверам без HTTP, чтобы получить ваш персонаж.

Ввод это в командной строке:

game:GetService("HttpService").HttpEnabled = true 
0

К сожалению, похоже, что я сделал оплошность, делая этот учебник. Если вы посмотрите на локальный журнал (а не на журнал сервера, поскольку этот код работает в LocalScript), вы увидите, что проблема находится в строке 5: unitFrame.PlayerName.Text = player.Name. Журнал жалуется, что не считает PlayerName членом или дочерним элементом unitFrame.

Эта проблема возникает из-за задержки репликации. Когда игрок впервые присоединяется к игре, все содержимое копируется из StarterGui в их PlayerGui. Но это происходит не мгновенно, не все сразу. Вполне возможно, что этот LocalScript скопирует и начнет выполнение перед копированием других элементов GUI.

Правильное решение в этом случае - использовать WaitForChild. Эта функция дает до тех пор, пока дочерний объект не будет существовать. Вы должны использовать его как при доступе к аватару ImageLabel и Playername TextLabel так:

unitFrame:WaitForChild("Avatar").Image = "http://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&username=" .. player.Name 
unitFrame:WaitForChild("PlayerName").Text = player.Name 

Имейте в виду, вы не должны делать это каждый раз, когда вы получаете доступ детей внутри GUI. Но это рекомендуется при инициализации LocalScripts, которые имеют дело с графическими интерфейсами, так что элементы GUI имеют время для загрузки.

В качестве дополнительной заметки я буду следить за тем, чтобы учебник обновлялся сегодня с помощью правильного кода. Прошу прощения за ошибку.

Смежные вопросы