/* 检索所有受影响box,入队 */ private void SearchAffectedBoxes() { foreach (var box in GetAffectedBoxes(_map.GetBoxIndex(this))) { if (box) { Affected_Boxes.Enqueue(box); } } //原坐标保留后,使用被推动后的坐标更新此实例在数组中的位置 DoMoveToInArray(_moveEndPosition); CheckSelf(); while (Affected_Boxes.Count != 0) { var box = Affected_Boxes.Dequeue(); box.Recive(); foreach (var sub in GetAffectedBoxes(_map.GetBoxIndex(box))) { if (sub && !Affected_Boxes.Contains(sub)) { Affected_Boxes.Enqueue(sub); } } } }