Trước hết tôi phải xác định rằng tôi đang làm việc trong Unity 5.3 và MonoDevelop mới không cho phép tôi gỡ lỗi. Unity chỉ bị treo :(Điều gì xảy ra với phân loại của tôi?
Vì vậy, tôi có một danh sách các "mục tiêu" mà tôi cần phải sắp xếp dựa trên 3 tiêu chí:
- đầu tiên sẽ được liệt kê các mục tiêu "hoạt động"
- sau đó ra lệnh bằng khó khăn mức
- cuối cùng một cách ngẫu nhiên cho các mục tiêu của cùng một mức
đây là mã của tôi:
public class Goal {
public int ID;
public int Level;
public bool Active;
}
...
List<Goal> goals;
goals.Sort((a, b) => {
// first chooses the Active ones (if any)
var sort = b.Active.CompareTo(a.Active);
if (sort == 0) {
// then sort by level
sort = (a.Level).CompareTo(b.Level);
// if same level, randomize. Returns -1, 0 or 1
return sort == 0 ? UnityEngine.Random.Range(-1, 2) : sort;
} else {
return sort;
}
});
Khi tôi chạy mã này đôi khi tôi nhận được một hoặc nhiều mục tiêu hoạt động sau những mục tiêu không hoạt động, nhưng tôi không hiểu tại sao.
Bạn có thể thu hẹp hành vi đối với một bộ đầu vào cụ thể không? –
Sự cố có thể liên quan đến thứ tự sắp xếp không phải là duy nhất. Đó là: bất kỳ lệnh nào * có thể * là chính xác, nhưng do ngẫu nhiên các mục có cùng mức độ ưu tiên, bất kỳ nỗ lực nào để xác minh đơn hàng này sẽ trả về một thứ tự khác. Tôi sẽ tìm một cách khác để xáo trộn mọi thứ – Draco18s
Bạn có thể đưa ra một đầu vào mẫu sao chép (hoặc có cơ hội tái tạo) vấn đề không? –