Могу ли я изменить свойство свойства в одной строке? - PullRequest
0 голосов
/ 17 марта 2019

В единстве, когда я пытаюсь сделать следующее;

gameObject1.GetComponent<ParticleSystem>().main.startSize = transform.localScale.x / 5;

Это говорит;

Невозможно изменить возвращаемое значение «ParticleSyste.main», поскольку оно не является переменной.

Но если я попытаюсь сделать следующее;

var particleSystemMain = gameObject1.GetComponent<ParticleSystem>().main;
particleSystemMain.startSize = transform.localScale.x / 5;

это работает. Почему я не могу напрямую изменить свойство свойства?

Кроме того, документация Unity делает это вторым способом: https://docs.unity3d.com/ScriptReference/ParticleSystem.MainModule-startSize.html

1 Ответ

3 голосов
/ 17 марта 2019

Когда вы назначаете main для varicleSystemMain, вы фактически получаете ее копию. Дело не в том, что действие технически невозможно, но оно не изменит основной в вашей частичной системе, и ваша измененная копия не сохраняется ни в какой форме, поэтому c # прямо вверх запрещает это.

См. Этот похожий вопрос для более глубокого объяснения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...