Я пытаюсь сделать вещи проще для других разработчиков, добавив функцию ответа прямо в функцию, которую они вызывают. Я не могу объяснить, что я пытаюсь достичь здесь, но я видел это раньше, поэтому я знаю, что это возможно.вне функции, которые вне параметров
Что я хочу, чтобы результат:
InventoryController.Instance.AddItemToInventory(0, 5, out (InventoryOperations operation) =>
{
switch (operation)
{
case InventoryOperations.Success:
Debug.Log("Successfully added the item!");
break;
case InventoryOperations.InventoryIsFull:
Debug.Log("Inventory is full!");
break;
}
});
И функция они называют это:
/// <summary>
/// Adds the item times the amount to the inventory.
/// </summary>
/// <param name="itemID">Item I.</param>
/// <param name="amount">Amount.</param>
public void AddItemToInventory(int itemID, int amount, out OnTaskComplete onTaskComplete)
{
onTaskComplete = _onTaskComplete;
//if we have the item, stack it
if(itemsInInventory.ContainsKey(itemID))
{
//increment it
itemsInInventory[itemID] += amount;
//successfully return the operation
_onTaskComplete(out InventoryOperations.Success);
}
else
{
if(itemsInInventory.Count < maxInventorySpaces)
{
itemsInInventory.Add(itemID, amount);
_onTaskComplete(out InventoryOperations.Success);
}
else
{
_onTaskComplete(out InventoryOperations.InventoryIsFull);
}
}
}
Это не работает. Я просто попытался создать делегат и параметры, а также сам делегат. Но это не сработало.
Но это не сработало. –
Это не имеет никакого смысла. 'out' должен быть назначен где-то, и я не вижу, что это происходит где угодно. – leppie
Очевидно, что вы не можете объяснить, что вы пытаетесь достичь здесь. Даже если можно, мы не поймем. –