【发布时间】:2018-04-30 15:02:07
【问题描述】:
即使我使用的是null-conditional operator ?.,我也会收到UnassignedReferenceException: The variable _Preset of Foo has not been assigned.。
我的代码:
// […]
myTarget.Preset?.ApplyTo(myTarget);
我还注意到它提到了_Preset 而不是Preset(我觉得这很奇怪)。
Foo.cs 中的代码:
[CreateAssetMenu()]
public class Foo : ScriptableObject
{
[SerializeField] private Preset _Preset = null;
public Preset Preset
{
get { return _Preset; }
protected set { _Preset = value; }
}
}
我做错了什么?运营商不就是为了这个吗?
Google 搜索没有帮助。
【问题讨论】:
-
UnassignedReferenceException与NullReferenceException不同。 -
看起来像是 Unity 特有的东西,如果你搜索
UnassignedReferenceException似乎是一些简单的答案 -
如果去掉空条件运算符,像
myTarget.Preset.ApplyTo(myTarget);一样直接使用,会发生什么?有什么错误吗? -
@Programmer 无论有没有它都会出现相同的错误。 (仅当我没有在 Inspector 中指定值时,如预期的那样)
-
我认为即使从编辑器初始化时问题仍然存在。我建议你只使用
== nll或!= null。如果可行,请坚持下去。
标签: c# unity3d null-conditional-operator