我有一个方法如下
public void RequestTPCost(Action<int> callback, Action<int> enemyCallback)
{
if (OnTPSelectionNeeded == null)
{
callback?.Invoke(0);
enemyCallback?.Invoke(0);
return;
}
if (TurnSystem.Instance.IsPlayerTurn())
{
//Player turn use shooting unit is selected and target is enemy
OnTPSelectionNeeded?.Invoke(this, new TPSelectionInfo()
{
callback = callback,
enemyCallback = enemyCallback,
TPAvailable = selectedUnit.GetTacticalPoints(),
enemyTPAvailable = targetUnit.GetTacticalPoints(),
});
}
else
{
OnTPSelectionNeeded?.Invoke(this, new TPSelectionInfo()
{
callback = callback,
enemyCallback = enemyCallback,
TPAvailable = targetUnit.GetTacticalPoints(),
enemyTPAvailable = selectedUnit.GetTacticalPoints()
});
}
}
我把它用在其他地方
x一个一个一个一个x一个一个二个x
现在我想检查ConfirmTPCost < ConfirmEnemyTPCost
是否正确,但不确定如何简单地执行此操作。
我有一个迂回的方法,使用事件和更多的UnityActionSystem
函数来调用示例,并通过它工作,但它似乎非常笨重,容易中断。有没有更好的方法来获得这些值,并检查哪个更多?
2条答案
按热度按时间ni65a41a1#
nbewdwxp2#
如前所述,听起来实际上涉及到一些异步部分。
因此,您可能希望正确实现
async
和await
模式,并等待这两个值都可用。或者,您可以使用nullables和局部函数(如
这里的想法是:无论两个回调中哪一个先触发,它都将被忽略,只有第二个回调的两个值都可用,并且可以调用实际的处理程序方法