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
    }


以上是Unity-在一行中获取组件并检查空值?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>