GOOGLE ADS

lunes, 2 de mayo de 2022

rendimiento infinito posible en 'Players.shaz:WaitForChild("Values")' estoy tratando de hacerlo así cuando el jugador reclama la cabina, convierte el valor bool en verdadero

local claim = script.Parent.Parent.Parent.Parent.StandMesh.Claim

Esto activará el aviso de proximidad.

claim.Triggered:Connect(function(player)
local screengui = player.PlayerGui:WaitForChild('Popups')
local popup = player.PlayerGui:WaitForChild('Popups').ClaimedBooth
local bool = player:WaitForChild('Values').Claimed


Solución del problema

"Rendimiento infinito posible" es una advertencia. Le permite saber que su código no es seguro y que cuando se ejecutó este código, el Valuesobjeto no existía (o se deletreó incorrectamente) durante más de 5 segundos y player:WaitForChild('Values')no pudo resolverse como un objeto.

La documentación de Instance:WaitForChild() dice lo siguiente:

notas


  • Si una llamada a esta función supera los 5 segundos sin regresar, y no se ha especificado ningún parámetro de tiempo de espera, se imprimirá una advertencia en la salida de que el subproceso puede producir indefinidamente; esta advertencia adopta la forma Rendimiento infinito posible en 'X:WaitForChild("Y")', donde X es el nombre principal e Y es el nombre del objeto secundario.

  • Esta función no funciona si existe un hijo con el nombre dado cuando se realiza la llamada.

  • Esta función es menos eficiente que Instance:FindFirstChild o el operador punto. Por lo tanto, solo debe usarse cuando el desarrollador no está seguro de si el objeto se ha replicado en el cliente. En general, esta es solo la primera vez que se accede al objeto.


Puede eliminar esta advertencia agregando un timeoutcomo segundo argumento, pero deberá tener en cuenta el hecho de que es posible que no se encuentre el objeto:

local timeout = 2 -- seconds
local values = player:WaitForChild('Values', timeout)
if values then
local boolVal = values.Claimed
print("Claimed = ", boolVal.Value)
-- mark it as claimed
boolVal.Value = true
else
warn("Could not find 'Values' BoolValue")
end

Alternativamente, si sabe que Valuesexistirá en el momento en que se ejecutará este código, simplemente puede acceder a él con el operador de punto o con la FindFirstChild()función. Pero esto arrojará un error de "Intento de indexar cero" si Valuesno existe.

local boolVal = player:FindFirstChild('Values').Claimed
-- or
local boolVal = player.Values.Claimed
-- mark it as claimed
boolVal.Value = true

Cuando vea esta advertencia, debe volver a verificar la ortografía del nombre del objeto, así como el momento en que se ejecuta la secuencia de comandos para asegurarse de que el objeto realmente existe.

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...