我的代码:
public Transform _targetTrans;
public Transform targetTrans => _targetTrans ?? (_targetTrans = transform);
代码使用合并运算符判断targetTrans是否为空,但是判断的结果时false,并不会执行??右边的 (_targetTrans = transform)代码。原因是_targetTrans字段是使用public修饰,这使他处于一种假空的状态,虽然用==识别为空,但是使用这个合并运算符就不行了,更深层次的原因咱也不懂,简单记录一下加深一遍印象吧。可以看看这篇文章。
改写为:
public Transform _targetTrans;
public Transform targetTrans => _targetTrans != null ? _targetTrans : _targetTrans = transform;