Why do I get variable not assigned?

This is my bullet raycast script.
Why does this script give me a GameObject victim not assigned? I’m trying to send the GameObject that gets hit by a bullet a message to decrease it’s health. The GameObject itself is supposed to be the object that the bullet hits.

public GameObject victim;

void Start()
{

	RaycastHit hit;
    Ray ray = new Ray(transform.position, transform.forward);

    if(Physics.Raycast(ray, out hit, Range))
    }
        transform.parent = hit.transform;
	    victim = hit.collider.gameObject;
	    networkView.RPC("TellPlayerToApplyDamage", RPCMode.All);
    }
}

[RPC]
void TellPlayerToApplyDamage()
{
	victim.gameObject.SendMessage(DamageMethodName, Damage, SendMessageOptions.DontRequireReceiver);
}

UnassignedReferenceException: The variable victim has not been assigned.

Hey I managed to figure out what I was doing wrong. I should have used

victim = hit.collider;

instead of

victim = hit.collider.gameObject;

Also I changed the SendMessage to SendMessageUpwards.

Thanks to everyone for your help!