[SerializeField] exposes a variable in your Inspector. The Inspector will override the value in your code. So if you change the value in your code, nothing will happen.
The second version might have worked because of the readonly keyword which prevents the value from being overridden.
Thanks for your reply. OK, now I understand, what these parameters overrided by Inspector. But this is not “public” variable, so I can’t see it (and can’t change it) in Inspector. But it’s calculated in some way. And I want to understand, from what data and with which algorithm it’s calculated.