Hey Developers! This might seem like a simple issue and I feel like I should know how to solve it. How can I get an Instance that is duplicated. For example I have this script:
local ScreenGui = game.StarterGui.TestGui.MainFrame
How can I refrence the Duplicated one with Only knowing it’s StarterGui Location?
Aka this:
local WhatINeedToGet = game.Players.LocalPlayer.PlayerGui.TestGui.MainFrame
And how can I make sure it is the correct instance? (if per say, there is many frames within that Gui, or Gui that share the same name, but are different Instances)
You can create something comparable to a relative path to do this:
--TODO double check path is really unique
function module.GetUniqueRelativePath(pathTo : Instance, from : Model) : string
if not pathTo:IsDescendantOf(from) then
error("Can't find relative path, pathTo Instance is not a descendant of 'from'")
end
local path = pathTo.Name
local parent = pathTo.Parent
while parent ~= from do
path = parent.Name ..".".. path
parent = parent.Parent
end
return path
end
function module.ResolveRelativePath(path : string, base : Instance) : Instance
local names = string.split(path, ".")
for _, pname in names do
base = base[pname]
if base == nil then
error("Invalid relative path. Base instance: " ..tostring(base.Name).. " Path string: " ..tostring(path))
end
end
return base
end