send an event from one script to another i.e. a collision

I want to call a function in scriptA every time an isolated event occurs(for example a collision or and instantiation) in scriptB, and also want to get lots of fast changing variables from scriptB at the time of the event.

the 2 scripts are on different GameObjects.

what is the way to do that?

void OnCollisionEnter(Collider other){
other.gameObject.SendMessage(…);
}

or OnTriggerEnter

or use delegates

Now that you can pass the instance to another object, to access many variables of the instance consider making them public read only properties.

With just a slight change in terminology, Google can answer all of your questions. Yes, we write “scripts”, but it’s better to think of them as Components. Then it’s more obvious to use things like GetComponent().

Makes sense?