Да, но ...
Вы не можете вызвать new
для любого сценария, который наследуется от MonoBehaviour
из-за необходимости подключения к игровому объекту. Таким образом, вы не можете создавать ссылки, но вы можете абсолютно разослать их:
public class myClass1 : monoBehaviour
{
public String text = "hello";
}
public class myClass2
{
private void Start(myClass1 mc1)
{
Debug.Log(mc1.text);
}
}
Теперь, myClass2#Start
будет трудно вызвать в этом примере, но он скомпилируется.
Я делаю подобные вещи в своих проектах все время. У меня обычно есть один класс, который является компонентом MonoBehaviour, который присоединен к основной камере с статическим полем экземпляра , на который я могу ссылаться из любого другого места, хотя большинство сценариев не-MB не имеют дело с объектами Unity большую часть времени (они содержат только данные, и один из классов менеджера обрабатывает обновление игровых объектов этими данными, поддерживая словарь между ними).
Хотя иногда объект содержит свою собственную ссылку GO (результат попытки разных вещей посмотреть, что сработало или желание избежать поиска в словаре - независимо от того, был ли он эффективным или нет).