Я узнал про то что из за MonoBehaviour нельзя создать экземпляр, вроде как. Можно мне поподробнее рассказать об этом? И есть ли тогда вообще смысл использовать static
DaNKuL, Ни в одном из примеров ты не создаешь экземпляр класса. В первом ты объявил поле, во втором получил компонент с другого компонента. Все, что наследуется от MonoBehaviour должно создаваться через Instantiate, нормально через конструктор ты не создашь объект. Статик использовать смысла нет
K0TlK, Вы имеете ввиду разный способ получения? Допустим мне нужно получить доступ к скрипту на другом объекте, то какой из этих методов лучше использовать? Или разницы нету?
Второй вариант медленный и ненадёжный, потому что GameObject вовсе не гарантирует содержание компонента Script.
Оба случая являются нестатическими полями. Главное отличие от статических - они привязаны к GameObject, на котором весит компонент, а их значения уникальны и независимы между разными копиями этого GameObject.
Использовать статичные поля в контексте GameObject смысла мало. При необходимости рекомендую использовать либо просто статические классы, либо (если их поведение завязано именно на игровом движке/редакторе) ScriptableObject.