Expose Public Methods

Say you have a Script with a couple of public methods. Is it possible to obtain a list or array of all the method names from another gameobject?

Yes you can do that using Reflection - be aware that such a method is pretty slow so you would probably want to cache the results and certainly not call every Update().

Add a using System.Reflection to the class in which you want to retrieve the values.

In that class do this:

var methods = myOtherObject.GetType().GetMethods();

Or if you want to get it from the class itself:

var methods = typeof(myOtherClass).GetMethods();

This will return you a list of MethodInfo instances, one for each method. They include the name and also a method of dynamically invoking that method - again speed of such a dynamic invocation is not brilliant. There are tricks to be able to cast a delegate created from the MethodInfo to a known type - then the invocation becomes as fast as calling a delegate (that is fast).

The parameterless version of GetMethods() returns public instance members from the class (including all base classes), there are versions that allow you to pass a BindingFlags parameter which can give you private members, static members and also members defined just in the actual class of the object you pass (not including base classes). See here for more details.