添加結構像一個
struct Vec2f{
float x;
float y;
};
一起編輯:
你需要重載運營商如 '+' ,' - '等在你的結構中。加法例如:
struct Vec2f
{
float x;
float y;
Vec2f operator+(const Vec2f& other) const
{
Vec2f result;
result.x = x + other.x;
result.y = y + other.y;
return result;
}
};
編輯2: RIJIK問在註釋:
此外,我不知道是否有一些技巧,讓職能並非如此的repetetive。我的意思是,如果我現在想要使用操作員,我必須爲每個操作員創建一個功能,即使除了所使用的操作員之外的功能之間沒有很大的區別。您在實施計算或許多操作員時如何處理?
這麼一件事,你可以做的是在運營商使用其他運營商。喜歡你的東西可以改變減法此外,通過簡單地否定第二個數字:
一個 - B成爲+(-b)
當然,你首先需要否定運營商在你的結構來做到這一點。示例代碼:
struct Vec2f
{
float x;
float y;
Vec2f operator+(const Vec2f& other) const
{
Vec2f result;
result.x = x + other.x;
result.y = y + other.y;
return result;
}
Vec2f operator-() const
{
Vec2f result;
result.x = -x;
result.y = -y;
return result;
}
// we use two operators from above to define this
Vec2f operator-(const Vec2f& other) const
{
return (*this + (-other));
}
};
這樣做的一個好處是,如果您更改添加例如比你不需要改變減法。它會自動更改。
而作爲回覆此:
但我不明白爲什麼我應該做的功能不變。
,因爲這樣你可以用等變量此功能。例如:
const Vec2f screenSize = { 800.0f, 600.0f };
const Vec2f boxSize = { 100.0f, 200.0f };
const Vec2f sub = screenSize - boxSize;
我在這裏也使用了花括號初始化,因爲你沒有定義任何構造函數。
如果你是一個初學者注意,你可能也在尋找擴展,這是在C#和Unity完全關鍵的事情。例如,在回答這個簡單的問題... ... http://answers.unity3d.com/answers/1118868/view.html它給出了擴展優良的教學教程。我敦促你熟悉它們,並在任何地方使用它們。請享用! – Fattie
這是另一個很好的例子,它涉及更多的矢量問題。 http://answers.unity3d.com/answers/1114273/view.html去吧! – Fattie