我正在XNA中製作矢量圖形遊戲。我設計了一個Line類來圍繞中心點旋轉以幫助繪製特定的形狀。爲了保持單一的事實真相,是否有辦法將形狀中心的引用傳遞給我創建的所有行,以便更新中心的位置也將更新行的位置?我認爲這樣的事情會起作用:C#XNA通過構造函數中的引用類
class Line
{
private Vector2 start;
private double length;
private double angle;
public Line(ref Vector2 start, double length, double angle){
this.start = start;
this.length = length;
this.angle = angle;
}
}
class Obj
{
private Vector2 center;
private Line[] lines;
public Obj(){
center = new Vector2(50,50);
lines = new Lines[5];
for (int i = 0; i < 5; i++){
lines[i] = new Line(ref center,30, (i/5 * 2 * Math.PI));
}
}
}
但是當我移動中心時線條不更新。我究竟做錯了什麼?
您可以創建一個簡單的類StructWrapper這將更通用。 (這與拳擊相似) –
MattDavey
是的,我實際上並不喜歡創建一個新的Vector2,因爲有很多方法使用Vector2並需要轉換,所以最好將ref保存到父對象並使用它的屬性。 – Andy
您也可以採用基於事件的方法,其中父對象在中心點更改時引發事件。不知道基於事件的模型在遊戲中有多受歡迎:) – MattDavey