HennoLuo TiledMap源码中,onJsonComplete方法里会解析所有图块信息,里面会读取ignore属性,如果为true,则忽略该图块的加载。后续会根据图块加载所有纹理。 但由于加载好的纹理是push进数组。会导致MapLayer的drawTileTexture方法在读取显示纹理时,调用TiledMap.getTexture方法传入的index和加载好的纹理所在的数组位置对不上。取出了别的纹理。 例如,正常不忽略图块的情况下,加载好的的纹理数组是[x,y,z]。如果忽略了x,则变成[y,z]。后续取纹理时,本来想取y得变成是取了z。 下图是ignore的部分的源码。 下图是getTexture的方法 这里是通过data的数据获取纹理的地方 总的来说是ignore属性目前不能使用,使用会导致读取纹理错误。不确定能否表达清楚,有疑问欢迎补充
HennoLuo Aar0n 是按照忽略前的纹理顺序取的。假设地图使用纹理A,B,C来制作地图,给A添加了ignore属性,导出时会根据使用纹理生成的data数据是1,2,3。在Laya加载时,由于忽略了A,纹理数组变成是[B,C]。data数据是不会变化的,所以如果要取B纹理就会调用getTexture(2),就会取到了C。