game.StarterGui
на самом деле является шаблоном GUI, и каждый раз, когда игрок присоединяется к игре, копия создается и передается новому игроку.Таким образом, если вы попытаетесь изменить его, вы не будете изменять его копии, которые были предоставлены всем игрокам.
Существует два решения этой проблемы:
- Используйте только относительные пути - то есть, используйте только пути к объектам графического интерфейса, которые начинаются с "
script.
", как вы сказали script.Parent.mouseClick:connect(…)
. - Итерируйте по всем копиямкоторые были выданы игрокам. Это можно найти под каждым
Player
объектом .PlayerGui
.
Вы почти никогда не должны делать последнее.Вот как вы можете решить:
Если у вас есть код, который найден в StarterGui
(а не в рабочей области или чем-то еще), то вам следует использовать первый.Это связано с тем, что когда StarterGui
копируется в графический интерфейс нового игрока (называемый PlayerGui
), этот сценарий копируется вместе с ним, поскольку он находился внутри StarterGui
.Таким образом, относительный путь, такой как script.Parent.Something.SomethingElse.Text = "hi"
, будет действительным;это повлияет на , что PlayerGui
.
Если у вас есть какой-то код , а не внутри StarterGui
(например, если он находится в рабочей области), то выдолжен использовать последний.Это потому, что такой сценарий не будет скопирован в PlayerGui
каждого игрока.В результате вы должны пройти через PlayerGui
каждого игрока в цикле for или что-то подобное.Этот сценарий встречается очень редко, и если он когда-либо существовал, подумайте о том, чтобы попытаться исключить его, если это возможно, потому что это очень сложная ситуация, с которой приходится сталкиваться;Вы должны учитывать особые обстоятельства, такие как вероятность того, что игрок еще не получил копию StarterGui
.
Пожалуйста, дайте мне знать, если это объяснение каким-либо образом сбивает с толку;Я сделаю все возможное, чтобы объяснить это лучше.
Вы можете найти некоторые наглядные пособия, сопровождающие это объяснение, а также дальнейшее чтение официального объяснения этой темы на ROBLOX Wiki: "Игрок противИнтерфейс пользователя стартера ".