Не думаю, что это действительно имеет значение. Я только что проверил и использовал цикл for
, который зацикливался 1 000 000 раз и нашел одинаковую задержку 0,02 между двумя кадрами.
Это, как говорится, сделает ваш код чище, потому что Player.Stats.Asd
чище, чем Player.GetComponent<PlayerStats>().Asd
. Это делает более очевидным, каково намерение. Я уверен, что это все еще микрооптимизация, чтобы сохранить ее как переменную с public PlayerStats Stats { get; set; }
, но это действительно, если вы используете это все время.
Вы не должны использовать переменную для каждого Component
, потому что если вы сделаете это для каждого скрипта, используемая память начнет увеличиваться.
Также обратите внимание, что я называю это Stats
, а не PlayerStats
, потому что Player.PlayerStats
излишне избыточен. Фактический тип должен называться PlayerStats
да, чтобы не путать его, скажем, с EnemyStats
, но когда вы собираетесь использовать оба, наличие Player.Stats
и Enemy.Stats
чище.