オブジェクトを部屋に配置するゲームを作成しています。ルームには、その中に配置できるオブジェクトのリストが保存されます。
List<RoomObject> possibleObjects = new List<RoomObject>(){ new Bed(), new Table() };
次に、これらのオブジェクトはそれぞれボタンに送信され、ユーザーがボタンをクリックできるようになり、選択したオブジェクトの配置フェーズに入り、ユーザーが部屋をクリックすると、オブジェクトが配置されます。
例えば
public Room currentRoom;
public RoomObject currentObject;
//...
public void onClick()
{
if (CanPlace) currentRoom.Add(currentObject);
}
私の問題は、ユーザーが同じオブジェクトを複数配置したい場合、現在の設定方法は、まったく同じオブジェクトが部屋に追加されることを意味し、そのオブジェクトが後で何らかの方法で編集された場合 (ベッドなど) .占有 = true)、部屋内のそのタイプのすべてのオブジェクトに影響します。
リフレクションを使用せずに(別の参照を取得するために)オブジェクトを複製する方法はありますか?
リフレクションの方法は、Type を渡し、Type.GetConstructor を使用してコンストラクターを呼び出す必要があると思いますが、可能であればこれを行いたくありません。リフレクションが唯一の方法である場合、誰かがそれを行う方法のサンプルコードを提供できますか?
編集 - おそらく、変数 currentObject が RoomObject タイプの変数ではなく、Bed などのサブクラスを保持するように指定する必要があります。(Bed は RoomObject から継承されます)。