public void GetRolesFromSightTest() { var manager = new GridSystem(5, 499.0D, 499.0D); manager.Init(); int[] map = new int[250000]; // 添加角色 for (var i = 0; i < 250000; ++i) { var x = GetRandomNum(0, 499); var y = GetRandomNum(0, 499); map[manager.AddEntityToGrid(new EEntity { Id = i, EntityType = EEntityType.ROLE, Position = new CPosition <double> { x = x, y = y } })]++; } // 获取视野内角色 manager.GetRolesFromSight(1, new CPosition <int> { x = 0, y = 0 }, out var set1, out var role1); manager.GetRolesFromSight(1, new CPosition <int> { x = 10, y = 10 }, out var set2, out var role2); manager.GetRolesFromSight(1, new CPosition <int> { x = 99, y = 99 }, out var set3, out var role3); manager.GetRolesFromSight(1, new CPosition <int> { x = 0, y = 99 }, out var set4, out var role4); manager.GetRolesFromSight(1, new CPosition <int> { x = 99, y = 0 }, out var set5, out var role5); manager.GetRolesFromSight(2, new CPosition <int> { x = 10, y = 10 }, out var set6, out var role6); output.WriteLine($"{set1.Count}"); output.WriteLine($"{set2.Count}"); output.WriteLine($"{set3.Count}"); output.WriteLine($"{set4.Count}"); output.WriteLine($"{set5.Count}"); output.WriteLine($"{set6.Count}"); Assert.True(set1.Count == 4); Assert.True(set2.Count == 9); Assert.True(set3.Count == 4); Assert.True(set4.Count == 4); Assert.True(set5.Count == 4); //Assert.True(role1.Count == 7); //Assert.True(role2.Count == 0); //Assert.True(role3.Count == 0); //Assert.True(role4.Count == 0); //Assert.True(role5.Count == 0); var strings = new StringBuilder(); for (var i = 0; i <= 99; ++i) { for (var j = 0; j <= 99; ++j) { strings.Append($"{manager.EntityIdMap[manager.GetGridIdxFromGridPos(i, j)][(int)EEntityType.ROLE].Count} "); } output.WriteLine(strings.ToString()); strings.Clear(); } Assert.True(set6.Count == 25); }