Might have missed something out, or forgotten something, but I think it is all there. (Both scripts are normal scripts not local) Okay, so I have created a script in which I have a union (Called Apple, but that is irrelevant) , when you touch the apple the apple will be removed from the workspace and your apple value will be +1. I have put an IntValue in the Player, like so:
game.Players.PlayerAdded:connect(function(player)
player.CharacterAdded:wait() --Waits until the CharacterAdded event has fired.
wait(1)
local Apple_count=Instance.new("IntValue") -- New IntValue
Apple_count.Parent = player
Apple_count.Name = "Apple_count" --Give a name to the IntValue, so you can easily identify it in other script
Apple_count.Value=0
end)
Now for the bit that doesn't work, the apple part (This is in a part, in the Workspace)
script.Parent.Touched:connect(function(player)
print (player.Parent.Name) --This would print the name of the person who touched the brick
local Player_name = player.Parent.Name
local Apple=script.Parent
Apple:remove() -- Haven't tested the remove part, because the script wasn't working without it, anyway.
game.Players.Player_name.Apple_count.Value=game.Players.Player_name.Apple_count.Value+1
end)
The Output states that Player_name is not a valid member of Players. Thanks.

3 comments
I edited my answer to include a description of how to use
FindFirstChildThanks.
It works.