If they are attached to the same gameobject you can just use SendMessage and all scripts should get the attached with the right function defined should get called.
The Upwards version is only required if you have a scenario like this
go - script 1
child - script 2
calling SendMessageUpwards from script 2 will send the message to script 1. Atleast thats how i interpret the docs.
To send multiple parameters with SendMessage you are gonna have to encapsulate them into one object. In your case using 3 parameters a Vector3 might be handy.
Edit: Remember to change the DoScrollControl function parameters acordingly aswell.
// the message we want to send
var message = "hi";
// parent is a transform. [url]http://unity3d.com/support/documentation/ScriptReference/Transform.html[/url]
var parent = transform.parent;
// as mentioned in that doc page, transforms children are accessed by iterating through the transform
for(var child : Transform in parent) {
// child is a transform. it has a SendMessage function that it inherits from Component
child.SendMessage("GreetFunction", message);
}
// so what we have done is go to our parent and then get a list of children from it, which we iterate through. This will include sending a message to ourself.
// you can also use GetComponent and then call the function which is a lot faster than sending messages
// it would be even faster to have the components cache themselves somewhere and then iterate through the cache of references
Pretty much if you want to do something in unity you can.