使用Unity開發遊戲有個很重要的課題
是要盡量避免非預期性的觸發GC.Collect
因為執行GC.Collect會容易造成遊戲的卡頓
如果是非靜止的畫面
就會給玩家遊戲效能不好的壞印象!!!
在C#內string的使用跟運算幾乎都會配置新的記憶體空間
不再使用的string就會進入GC(Garbage Collection)
當記憶體不足的話就會自動觸發GC.Collect
而大量的配置新的記憶體空間也會造成記憶體破碎
要避免這些問題
就要把string循環利用
那要怎麼把string改成能循環利用呢
- 將string用class包裝起來,來達成可循環利用的效果
- 使用pointer來複寫C# string的原生function(會造成GC的function)
- 寫個class來管理string class
一些常用且需要複寫的function大致如下:
append - 取代原本string相加
insert - 取代原本insert
ToString - 複寫Object.ToString為了避免誤用到原本的function
toUpper - 小寫英文轉大寫
toLower - 大寫英文轉小寫
subString - 擷取部分字串
format - 可以依照企劃面的需求自定義格式化規則
getHashCode - 可在字串比對用到
replace - 置換字串
remove - 移除字串