如何统一使用泛型函数?

时间:2017-03-13 01:56:22

标签: c# unity5 generic-programming

我正在尝试确定哪个组件被用作参数,但我不知道如何尝试访问它,因为一切都会引发错误。

第一个功能AttemptMove检测到光线播放与之碰撞的内容。然后它调用OnCantMove函数并使用T作为参数。

protected virtual void AttemptMove<T> (int xDir, int yDir) where T: Component
{
    RaycastHit2D hit; 
    bool canMove= Move (xDir, yDir, out hit);
    if (hit.transform == null)
        return;

    T hitComponent = hit.transform.GetComponent<T> ();
    //Debug.Log (hit.transform.GetComponent<T> ());
    if (!canMove && hitComponent != null)
        OnCantMove (hitComponent); 
}

protected override void OnCantMove<T>(T component)
{       
    Wall hitWall = component as Wall;
    hitWall.DamageWall (wallDamage);
    animator.SetTrigger ("PlayerChop");
}

我希望能够以同样的方式破坏敌方玩家,因为我需要能够在OnCantMove函数中进行某种检查以确定T是什么。我对统一的通用功能非常不熟悉,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

您可以使用

检查T类型
 Type itemType = typeof(T);
 if(itemType == typeof(int) || itemType == typeof(decimal))