Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Среди разработчиков бытует мнение, что «магические» методы (Update, Start, OnSceneGUI и другие) реализованы по средствам System.Reflection в C#, однако есть информация, что это не так, и за их работу стоит благодарить C++ ядро Unity3D
Методы-события не обязательно должны быть приватными.
Из C#. Когда у вас ядро на плюсах, а шарп — скрипты, то проблема решается иначе.
А учитывая то, что на многих платформах теперь вообще ILtoCPP, то рефлекшн там и не может использоваться. Равно как он не используется, судя по всему, ядром Unity. Я могу конечно ошибаться, но насколько я понимаю, из C++ кода вы отражения .NET никак не можете использовать.
Так же как публичные, плюсам неважно какие у вас там методы.
Получить данные о приватном методе в C# можно только через рефлексию

// Alt+Shift+G, # - shift, & - alt, % - ctrl/cmd
[MenuItem("Edit/Test #&g")]
static public void Abc() {
Debug.Log("Pressed!");
}
// .. Editor class
// Built-in method
public void OnEnable() {
SceneView.onSceneGUIDelegate = scene.UpdateScene; // Точно не помню что это за переменная, но у меня в этом методе вся отрисовка сцены написана
EditorApplication.update = Redraw; // Вот это событие вызывается около 20 раз в секунду
}
// Your methods
public void UpdateScene(SceneView sceneView) {}
public void Redraw() {
// Принудительно вызовет методы OnInspectorGUI
EditorUtility.SetDirty(target);
Repaint();
}
// Принудительно вызовет методы OnInspectorGUI EditorUtility.SetDirty(target);

Расширение функционала Scene View в Unity3D. Перехват событий