Unity-在一行中获取组件并检查空值?
c#
有没有办法简化以下代码块?
MyComponent myComponent = gameObject.GetComponent<MyComponent>();
if (myComponent != null)
{
// do something
}
就像是
if (var myComponent = gameObject.GetComponent<MyComponent>() != null) {
// do something
}
我这样做的动机是因为我正在对鼠标按下进行光线投射,并且我希望用户单击的对象类型影响发生的事情。例如,我会做类似的事情
ComponentOne componentOne = gameObject.GetComponent<ComponentOne>();
if (componentOne != null)
{
// do something
return;
}
ComponentTwo componentTwo = gameObject.GetComponent<ComponentTwo>();
if (componentTwo != null)
{
// do something
return;
}
ComponentThree componentThree = gameObject.GetComponent<ComponentThree >();
if (componentThree != null)
{
// do something
return;
}
然而,这很混乱,而且不必要地冗长。
回答
您正在寻找TryGetComponent
if (TryGetComponent(out MyComponent myComponent))
{
// do something
}