У меня есть 2 варианта проверки по материалу. Есть ли какие-то изменения в производительности, если я создаю переменную типа String хранящую название материала или нет?
1)
if (material.name == "grass (Instance)") { }
2)
public string grass = "grass (Instance)"; if (material.name == grass) { }
Первый вариант лучше с точки зрения оптимизации - меньше используется не нужных переменных и т.д.
Однако, второй будет лучше с точки зрения повторного использования кода, если вынести такие статичные флаги отдельно в таблицу, то не надо будет переписывать в коде каждый раз, где происходит сравнение с этим значением.
Об этом стоило бы задуматься, работая на 128 мб оперативной памяти. В наше время такие махинации это трата времени. На начальном этапе излишне оптимизировать проект, которого нет.
Об более лучшем проектировании можно почитать в книге Макконнелл совершенный код.
Разницы абсолютно никакой. Строка и там и там займёт одинаковое колличество места, при компиляции её просто занесут в таблицу данных. А вот переменные, будут занимать очень мало так, как насколько мы знаем string - это ссылочный тип, и соответсвенно перпеменная хранит только ссылку на сами данные. По сути разница будет только в паре байт.
Но вот с точки зрения повторного использования код да, переменная лучше.