[英]order Array elements by Id and remove specific ones in Unity / C#
我有一個數組,可以在游戲中存儲所有關卡。 該數組搜索所有級別,
所以我去找這段代碼
private Level[] levels;
private void Start()
{
levels = FindObjectsOfType<Level>(); // find all levels
levels = levels.OrderBy(currentLevel => currentLevel.Id).ToArray(); // order the array by levelId
levels = levels.Where(currentLevel => currentLevel.IsUnlocked).ToArray(); // remove the locked levels from the array
}
有更好的方法訂購陣列並刪除鎖定的水平嗎?
您可以將thoose查詢合並為一個語句。
levels = FindObjectsOfType<Level>()
.Where(t=> t.IsUnlocked)
.OrderBy(currentLevel => currentLevel.Id)
.ToArray();
讓我們這樣說:我們想找到所有未鎖定的關卡並按ID排序,如果只需要幾個關卡,則無需對整個關卡進行排序。
還值得一提的是.ToArray()
強制立即執行查詢評估並返回一個新數組。
您可能需要按照以下方式進行操作:
levels =
FindObjectsOfType<Level>()
.Where(currentLevel => currentLevel.IsUnlocked)
.OrderBy(currentLevel => currentLevel.Id)
.ToArray();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.