我正在尝试将 xml 文件用于 spritesheet 数据;我有一个框架类,它要么包含一个矩形,要么包含另一个框架列表(它可以是一个框架本身,也可以是更多框架的持有者)。xml 包含框架的所有矩形。我已将 xml 添加到内容项目并使用 Content.load("xmlname") 加载它。
使用一次时,这一切都很好。但是,当我创建 2 个共享相同 spritesheet 的对象(以及因此相同的 xml 数据文件)时,当这 2 个对象位于同一帧上时,它们就会消失。经过一番挫折后,我发现 xml 文件总是返回相同的对象,因此共享帧,因此它一次只能绘制一个位置的帧。
这是 xml 文件的一小部分:
<?xml version="1.0" encoding="utf-8"?>
<rect>0 0 0 0</rect>
<frames>
<Item>
<rect>0 0 0 0</rect>
<frames>
<Item>
<rect>19 27 15 22</rect>
<frames></frames>
<label>DOWN</label>
</Item>
<Item>
<rect>2 27 15 23</rect>
<frames></frames>
<label>DOWN</label>
</Item>
<Item>
<rect>19 27 15 22</rect>
<frames></frames>
<label>DOWN</label>
</Item>
<Item>
<rect>36 27 15 23</rect>
<frames></frames>
<label>DOWN</label>
</Item>
</frames>
<label>DOWN</label>
</Item>
类的精简版:
public class Frame
{
public Rectangle rect; //means this is an image
private Renderable renderable = null;
private List<Frame> frames;
private Texture2D texture;
private int currentFrame = 0;
示例用法:
Sprite sprite1 = new Sprite();
sprite1.frame = Content.load<Frame>("xml");
sprite1.frame.getFrame(0).alpha = 0.5f;
Sprite sprite1 = new Sprite();
sprite2.frame = Content.load<Frame>("xml"); //<--- doesn't return a new object, returns the same object as sprite 1 uses
//frame 0 in sprite 2 has an alpha of 0.5 aswell, without having modified it
我试图手动反序列化 xml,但反序列化列表是一场噩梦。我在这里做错了吗?看起来很奇怪,它返回相同的对象