重複の可能性:
List<T>の2つのアイテムを交換します
編集:たぶん、これは「b」値を取得するために機能しますか?
for (int i = 0; i < inventory.Count; i++)
{
if (inventory[a].ItemRectangle.Intersects(inventory[i].ItemRectangle))
{
itemB = inventory[i];
}
}
編集:これが私の進捗状況です。
Item itemA;
Item itemB;
int a = -1;
int b = -1;
if (a != -1 && b != -1)
{
itemA = inventory[a];
itemB = inventory[b];
Swap(ref itemA, ref itemB);
inventory[a] = itemA;
inventory[b] = itemB;
}
そして、これが私が「a」値を取得しているところです。
if (item.ItemSelected == true)
{
a = item.ItemIndex;
}
else
a = -1;
同じリストにある別のアイテムと衝突するアイテムをチェックする必要があるため、「b」値を取得する方法がわかりません。誰かが私がこれを行う方法を知っているなら、教えてください。それは私が推測するこのように見えるでしょう:
if (item.ItemRectangle.Intersects(//the other item.ItemRectangle)
{
b = item.ItemIndex;
}
else
b = -1;
在庫と呼ばれるリスト<アイテム>を作成しました。だから今私はこのようなスワップ関数を実装したいと思います:
foreach (Item item in inventory)
{
if (mouseRectangle.Intersects(item.ItemRectangle))
{
if (Input.EdgeDetectLeftMouseDown())
{
switch (item.ItemSelected)
{
case false:
item.ItemSelected = true;
break;
case true:
item.ItemSelected = false;
break;
}
}
}
else if (Input.EdgeDetectLeftMouseDown())
{
switch (item.ItemSelected)
{
case true:
item.ItemSelected = false;
break;
}
}
else if (item.ItemSelected == true)
{
item.ItemPosition = new Vector2(mouseRectangle.X, mouseRectangle.Y);
item.ItemRectangle = new Rectangle(mouseRectangle.X, mouseRectangle.Y, 32, 32);
}
else if (item.ItemSelected == false && //a lot of checks to determine it is not intersecting with an equip slot
{
item.ItemPosition = item.OriginItemPosition;
item.ItemRectangle = item.OriginItemRectangle;
}
else if (item.ItemRectangle.Intersects(item.ItemRectangle))
{
//SwapItem(inventory, item, item);
}
それが私が助けを必要としているコードの一部です。リスト内の任意のアイテムをリスト内の他のアイテムと交換できるようにしたい。私のSwapItemメソッドは単なるプレースホルダーであり、実際にはまだSwapItemメソッドを持っていません。
メソッドに渡す引数を、交換したいアイテムに関連付けたいと思います。したがって、最初のアイテムはマウスで選択したアイテムになり、他のアイテムは最初のアイテムが交差しているアイテムになります。