同様の質問を読んでも、明確で正確な答えが得られないようです。コピーコンストラクターを使用してJavaでオブジェクトのクローンを作成しようとしています。これは、ディープコピーです。
public class Tile{
Image sprite = null;
int x = 0;
int y = 0;
public Tile(Image setImage, int sX, int sY){
this.sprite = setImage;
this.x = sX;
this.y = sY;
}
public Tile(Tile copyTile){
this.sprite = copyTile.sprite;
this.x = copyTile.x;
this.y = copyTile.y;
}
public void setNewLocation(int sX, int sY){
this.x = sX;
this.y = sY;
}
}
次に、タイルマップを作成すると、次のようなことができます。
List<Tile> tileList = new List<Tile>();
Tile masterGrassTile = new Tile(grassImage, 0,0);
tileList.set(0,new Tile(masterGrassTile));
tileList.set(1,new Tile(masterGrassTile));
tileList.get(0).setNewLocation(0,32);
tileList.get(1).setNewLocation(0,64);
両方のタイルをそれぞれの場所にレンダリングするとしたら、それは機能しますか?または、割り当てtileList.get(1).setNewLocation(0,64);でした。参照のように効果があり、それらはすべて最後の割り当てと同じ場所にあります。