When I play solo in Studio, after a few seconds the debugger kicks in, and tells me that there's an error in a script. It's a hat removing script parented to a part. When I touch it w/ my character, it removes all of my hats. Even though it does its job without any problems, I still get this error:
Error | attempt to index field 'Parent' (a nil value)
This is the code:
01 | function onTouched(hit) |
02 | local d = hit.Parent:GetChildren() |
03 | for i = 1 , #d do |
04 | if (d [ i ] .className = = "Hat" ) then |
05 | d [ i ] :remove() |
06 | end |
07 | end |
08 | end |
09 |
10 | script.Parent.Touched:connect(onTouched) |
Can any1 tell me what's wrong?
Gosh, I figured it out. The part this script was parented to was touching another part(a part that didn't have a parent, hence the error), so the function was being called even when my character wasn't touching the hat remover. To fix, just check if "hit" has a parent.
01 | function onTouched(hit) |
02 | if not hit.Parent then |
03 | return nil |
04 | elseif hit.Parent then |
05 | local d = hit.Parent:GetChildren() |
06 | for i = 1 , #d do |
07 | if (d [ i ] .className = = "Hat" ) then |
08 | d [ i ] :remove() |
09 | end |
10 | end |
11 | end |
12 | end |
13 |
14 | script.Parent.Touched:connect(onTouched) |