C# Else If 被忽略

C# Else If is ignored

i 运行 正在寻找像素的程序。 但是如果像素不在 Search1 的范围内,那么它应该在 search2 范围内搜索。 但它忽略了我的 else if。如果我的像素不在 Search1 中,那么我的程序什么都不做,等待它再次进入 Search1 范围内。

我做错了什么? 我认为以这种方式放置 Else 是正确的:/

void SEARCHING()
{
    while (true)
    {
        if (GetKeyState(Keys.X) == 1)
        {
            try
            {
                object search1 = au3.PixelSearch(768, 432, 1200, 675, 0xDD2C02, 5);
                object search2 = au3.PixelSearch(600, 337, 1319, 864, 0xDD2C02, 5);
                object search3 = au3.PixelSearch(400, 225, 1519, 900, 0xDD2C02, 5);
                object search4 = au3.PixelSearch(200, 70, 1519, 900, 0xDD2C02, 5);


                if (search1.ToString() != "1")
                {
                    object[] search1Coord = (object[])search1;
                    au3.MouseClick("LEFT", (int)search1Coord[0] + 50, (int)search1Coord[1] , 1, 1);
                }
                
                else if (search2.ToString() != "1")
                {
                    object[] search2Coord = (object[])search2;
                    au3.MouseClick("LEFT", (int)search2Coord[0] + 50, (int)search2Coord[1] , 1, 1);

                }
                else if (search3.ToString() != "1")
                {
                    object[] search3Coord = (object[])search3;
                    au3.MouseClick("LEFT", (int)search3Coord[0] + 50, (int)search3Coord[1] , 1, 1);
                }

                else if (search4.ToString() != "1")
                {
                    object[] search4Coord = (object[])search4;
                    au3.MouseClick("LEFT", (int)search4Coord[0] + 50, (int)search4Coord[1] , 1, 1);
                }                                                                    
            }
            catch { }                
        }        
    }
}

如果 search1 失败,您将收到错误消息。因为try/catch,你会立即跳起来接球。您需要在每次搜索时使用 try/catch。

如果您使用的是 AutoItx,则 PixelSearch 方法中似乎存在错误。 看看这个答案,可能对你有帮助

PixelSearch in certain area of monitor