2015-08-24 96 views
0

我試着去理解一個團結的示例腳本,我發現下面的代碼示例:C#構造

protected IEnumerator SmoothMovement(Vector3 end) { 
    float sqrRemainingDistance = (transform.position - end).sqrMagnitude; 

    while (sqrRemainingDistance > float.Epsilon) { 
     Vector3 newPosition = Vector3.MoveTowards(rb2d.position, end, inverseMoveTime * Time.deltaTime); 
     rb2d.MovePosition(newPosition); 
     sqrRemainingDistance = (transform.position - end).sqrMagnitude; 
     yield return null; 
    } 
} 

public abstract void OnCantMove <T> (T component) 
    where T : Component; 

我真的不明白的最後兩行。他們是什麼意思,他們在做什麼?

+0

類型的最後兩行定義一個抽象方法,它繼承的類將需要重寫。 – David

回答

1

那些拖行定義一個抽象方法返回什麼,並期望任意Component一個泛型參數。任何實現抽象類的類都應該實現這個抽象方法。

1

這只是一個方法簽名。擊穿的樣子:

public abstract

一個公共方法,即必須在派生類

void

無返回值

OnCantMove

方法被命名爲OnCantMove被重寫

<T>(T component)

它需要一個類型參數T,並T型,它是主叫component的一個實例。通常,如果調用此方法時使用該類型的實例參數,則編譯器足夠智能,可以自行確定類型參數。如此可能,您可以將此參數設爲<T>

where T : Component

類型參數T被約束爲Component