Aikon, не совсем правильно ты делаешь. Для этого используются интерфейсы.
И если у тебя есть класс, который уже наследуется от друга твоего класса, то твой способ не сработает.
Я сделал интерфейс
public interface BulletReceiver {
void Attacked(Vector3 point);
}
Могу добавить этот интерфейс любому скрипту.
А при выстреле делаю так:
MonoBehaviour[] components = hit.collider.gameObject.GetComponents<MonoBehaviour>();
foreach( MonoBehaviour component in components ) {
if( component is BulletReceiver ) {
( ( BulletReceiver ) component ).Attacked( hit.point );
}
}
GetComponents ищет все что унаследовано от Component, поэтому мой интерфейс и не искало. Вот только без поиска нельзя получить список всех скриптов?
Я вот только не понял в C# и родительские классы и интерфейсы пишутся через запятую после двоеточия? В java для наследования используется extends, а для интерфейсов implements.