Javaがオブジェクト参照を処理する方法を正しく理解していないと思います。これは、何かが思ったように機能していないことに気付いた問題の例です。
public void UnequipObject(int index) {
UsableItem ui = null;
if(index == 0) ui = item1;
else if(index == 1) ui = item2;
else if(index == 2) ui = item3;
if(ui != null)
{
int itemId = ui.GetId();
State.Instance().AddItem(itemId, 1);
ui = null;
}
}
この機能は、キャラクターのオブジェクトを装備解除します(私はビデオゲームを開発しています)。各キャラクターは最大 3 つのオブジェクトを持ちます。より汎用的にするには、特定のインデックスを使用して、そのオブジェクトの装備を解除します。そのために、装備を外して変更を加えたいオブジェクトを ui にコピーします。ここでは州は重要ではありません。ポイントは、「ui = null」の割り当てを行うと、元のオブジェクトもnullになると想定されていたため、オブジェクトをuiに割り当てた瞬間に両方が同じ参照であり、変更が両方に同時に影響するように、両方のいずれかを編集します...
この誤解について誰か助けてくれませんか?ありがとう!