public Task <bool> DestroyAsync() { async UniTask <bool> DestroyTask() { await UniTask.SwitchToMainThread(); var count = Region.items.RemoveAll(d => ReferenceEquals(d, m_ItemData)); if (count == 0) { // already destroyed return(false); } s_SendTakeItem.Invoke(ENetReliability.Reliable, Regions.EnumerateClients(RegionX, RegionY, ItemManager.ITEM_REGIONS), RegionX, RegionY, m_ItemData.instanceID); return(true); } return(DestroyTask().AsTask()); }