美好的一天,我想在一個按鈕上有兩個 onclick 事件。然后在另一個之前執行我使用下面的代碼,但它同時執行。
void Start() {
someUIButtonReference.onClick.AddListener(SomeFunction1); // first
someUIButtonReference.onClick.AddListener(SomeFunction2); // second
}
void SomeFunction1() {
Debug.Log("SomeFunction1");
}
void SomeFunction2() {
Debug.Log("SomeFunction2");
}
uj5u.com熱心網友回復:
在我看來,你真正想要的是在回呼之間交替,每次點擊只執行其中一個。
如果你只有兩個,你可以簡單地使用一個bool標志并做
private bool isSecondClick;
void Start()
{
// Use a wrapper callback instead
someUIButtonReference.onClick.AddListener(HandleClick);
}
private void HandleClick()
{
if(!isSecondClick)
{
SomeFunction1();
}
else
{
SomeFunction2();
}
isSecondClick = !isSecondClick;
}
void SomeFunction1()
{
Debug.Log("SomeFunction1");
}
void SomeFunction2()
{
Debug.Log("SomeFunction2");
}
如果會有更多的回呼,那么你可以使用類似的東西,例如
private int index;
private Action[] listeners = new Action[]
{
SomeFunction1,
SomeFunction2,
SomeFunction3,
...
};
void Start()
{
// Use a wrapper callback instead
someUIButtonReference.onClick.AddListener(HandleClick);
}
private void HandleClick()
{
var action = listeners[index];
action.Invoke();
index = (index 1) % listeners.Length;
}
void SomeFunction1()
{
Debug.Log("SomeFunction1");
}
void SomeFunction2()
{
Debug.Log("SomeFunction2");
}
void SomeFunction3()
{
Debug.Log("SomeFunction3");
}
...
uj5u.com熱心網友回復:
您可以定義一個標志并在 lambda 運算式中使用它來在函式之間交替。旗幟將被關閉。
bool flag = false;
someUIButtonReference.onClick.AddListener
(
() => flag = !flag ? SomeFunction1() : SomeFunction2()
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/410964.html
標籤:
