C# 使用out参数编写自己的自定义方法
在Unity中,我有一个附带触发器的游戏对象。此触发器侦听enter、exit和stay事件 当执行事件时,将检查碰撞对象的特定接口组件。如果此接口组件不为null/已附加,则代码应从接口组件调用方法 目前我是这样做的C# 使用out参数编写自己的自定义方法,c#,unity3d,C#,Unity3d,在Unity中,我有一个附带触发器的游戏对象。此触发器侦听enter、exit和stay事件 当执行事件时,将检查碰撞对象的特定接口组件。如果此接口组件不为null/已附加,则代码应从接口组件调用方法 目前我是这样做的 public class LightSource : MonoBehaviour { private void OnTriggerEnter(Collider col) { HandleLight(col, LightAffectableActio
public class LightSource : MonoBehaviour
{
private void OnTriggerEnter(Collider col)
{
HandleLight(col, LightAffectableAction.Enter);
}
private void OnTriggerExit(Collider col)
{
HandleLight(col, LightAffectableAction.Exit);
}
private void OnTriggerStay(Collider col)
{
HandleLight(col, LightAffectableAction.Stay);
}
private void HandleLight(Collider col, LightAffectableAction action)
{
ILightAffectable lightAffectable = col.GetComponent<ILightAffectable>();
if (lightAffectable != null) // Is the component attached?
{
switch (action)
{
case LightAffectableAction.Enter:
lightAffectable.EnterLight();
break;
case LightAffectableAction.Exit:
lightAffectable.ExitLight();
break;
case LightAffectableAction.Stay:
lightAffectable.StayInLight();
break;
}
}
}
private enum LightAffectableAction
{
Enter,
Exit,
Stay
}
}
但是我不知道如何创建一个像TryGetComponent
这样的扩展方法来适合上面的示例代码
我传入一个组件类型作为参数,并获取该组件作为输出参数
如何创建这样的方法?您可以创建一个通用扩展方法,就像现有的
GetComponent
方法一样
public static class ColliderExtensions
{
public static bool TryGetComponent<T>(this Collider collider, out T component) where T : class
{
component = collider.GetComponent<T>();
return component != null;
}
}
您可以创建一个通用扩展方法,就像现有的
GetComponent
方法一样
public static class ColliderExtensions
{
public static bool TryGetComponent<T>(this Collider collider, out T component) where T : class
{
component = collider.GetComponent<T>();
return component != null;
}
}
ILightAffectable component;
if (col.TryGetComponent(out component))
{
component.ExitLight();
}