有沒有一種方法可以一次性檢查一個陣列中的所有按鈕是否處于激活狀態?我正在使用for回圈來確定它,但是break;并沒有真正表明我想要實作的東西。
public Button[] bts;
public void StateButton()
{
for (int i = 0; i < bts.Length; i)
{
if (!bts[i].interactiveable)
{
Debug.Log("所有按鈕都關閉")。
break;
}
else; }
{
Debug.Log("至少有一個打開了")。
}
}
}
uj5u.com熱心網友回復:
可以使用LINQ:
var allInteractable = bts.All(e => e.interactable)
根據陣列的長度和按鈕的預期狀態(即你知道幾乎所有的時間里至少有一個按鈕是不可互動的),使用以下方法反轉查詢可能會更有效:
var atLeastOneNonInteractable = bts.Any(e => !e.interactable)
uj5u.com熱心網友回復:
你的除錯日志與你問題的標題并不相符。
寫出來的應該是
public bool StateButton()
{
var allOn = true;
foreach (var btn in bts)
{
if (!btn.interactiveable)
{
allOn = false;
break;
}
}
Debug.Log(allOn ? "所有按鈕開啟" : "至少一個按鈕關閉")。
return allOn;
}
或者
public bool StateButton()
{
var anyOn = false;
foreach (var btn in bts)
{
if (btn.interactiveable)
{
anyOn = true;
break;
}
}
Debug.Log(anyOn ? "至少一個按鈕打開" : "所有按鈕關閉")。)
return anyOn;
}
根據你的需要。
然后你已經有了Michael Mairegger的答案,使用Linq將其縮短為一行;)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/329084.html
標籤:
