As Andrey said, I believe Unity accesses those methods by naming/signature convention and not by any compile-time identity.
What you could do is define an interface
that represents these methods:
public interface IStart
{
void Start();
}
public interface IUpdate
{
void Update();
}
Then in your script classes, you can inherit from the interfaces you intend to implement:
public class MyScript : MonoBehaviour, IStart, IUpdate
{
public void Start()
{
}
public void Update()
{
}
}
Downside is that these methods become public
. I've never tried, but I assume that Unity would support these methods being implemented via explicit interface implementation which might help hide those method calls from typical API access:
public class MyScript : MonoBehaviour, IStart, IUpdate
{
void IStart.Start()
{
}
void IUpdate.Update()
{
}
}
Once you have these, if you typo the method signature you will get a compiler error.
As an added bonus, I don't know if MonoDevelop has this option, but in Visual Studio, when you add the interface inheritance in the class declaration, you get a context option to have Visual Studio automatically implement the interface method signatures (either implicitly or explicitly).