2016-08-24 67 views
0

我想要一個簡單的Vector2類/結構浮點x和y和幾個方法。 我仍然試圖把我的頭圍繞差異,但不能完全得到它 我知道它通常與結構完成,但我想更新每個幀的Vector2大2D陣列,這將使一個類更好比結構? 首先發布在這裏,並提前感謝所有回覆!Vector2:類或結構?

+0

我投票**結構** – MrClan

+1

我不明白的是,你給你的問題的Unity3D標籤。在引擎中已經有一個Vector2/3/4結構,所以不需要創建自己的結構。 – Everts

+0

我認爲不斷的更新使得一個類比一個結構更好,所以我應該做一個新的Vector2類 – Hadi

回答

6

會,使一類比結構

此操作更好,也不是專門的任何更好或更壞;然而,擁有很多長壽命的物體意味着你可能會遇到GC故障。它是「大型二維數組」的事實意味着您也可以通過使用結構體來節省大量開銷(對象頭)。

+0

親愛的主席先生! **你也可以通過使用結構來潛在地節省大量的開銷(對象頭文件)**這是太多的信息供我消化。你能再解釋一下嗎? –

+0

對我來說消化太多了,但經過一些Google搜索之後,我有點想法。 所以如果我正確地理解它,是垃圾收集一個比收集原始類型更昂貴的結構?這會讓2個浮點數組更容易嗎?但是這不會使開銷增加一倍嗎?我應該支持哪一個?他們還說,除非它是不可變的,否則不要使用結構。是不是更新被認爲是「可變性」的每一幀?感謝回覆 – Hadi

+1

@UmairM'class'的每個實例都是一個**對象**。一個對象在堆上由*對象頭*加上實際數據組成的空間分配。值類型被分配*作爲其他東西的一部分*,並且沒有對象頭 - 類型通過擁有它的東西隱含。在數組的情況下,類型被數組*的類型隱含*。當你有數千或數百萬的小數據時,這種差異就會加起來。 –