Ric*_*ill 2 c# unity-game-engine
我见过“如果在 IF 条件下找到组件,则使用它”的简写
所以而不是这个
SomeScript script = gameObject.GetComponent<SomeScript>();
if (script != null) {
script.DoSomething();
}
Run Code Online (Sandbox Code Playgroud)
我看到过类似这样的速记
if (SomeScript script = gameObject.GetComponent<SomeScript>()) {
script.DoSomething();
}
Run Code Online (Sandbox Code Playgroud)
有人知道我的意思吗?抱歉不懂术语
您很可能正在寻找(最近添加的,我认为从 2019.2 及更高版本开始)TryGetComponent。
从统一文档:
获取指定类型的组件(如果存在)。
TryGetComponent 将尝试检索给定类型的组件。与 GameObject.GetComponent 相比的显着区别在于,当请求的组件不存在时,此方法不会在编辑器中分配。
using UnityEngine;
public class TryGetComponentExample : MonoBehaviour
{
void Start()
{
if (TryGetComponent(out HingeJoint hinge))
{
hinge.useSpring = false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
或者用你的例子
if (TryGetComponent(out SomeScript script))
{
script.DoSomething();
}
Run Code Online (Sandbox Code Playgroud)
如果使用TryGetComponent对找到的组件的引用找到了组件,则将存储在out参数中,然后您可以在if块内使用该参数。
如果未找到匹配的组件,则转到该else部分。
| 归档时间: |
|
| 查看次数: |
709 次 |
| 最近记录: |