我正在尝试确定哪个组件被用作参数,但我不知道如何尝试访问它,因为一切都会引发错误。
第一个功能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是什么。我对统一的通用功能非常不熟悉,所以任何帮助都会受到赞赏。
答案 0 :(得分:0)
您可以使用
检查T类型 Type itemType = typeof(T);
if(itemType == typeof(int) || itemType == typeof(decimal))