纹理 texture->setAliasTexParameters() 是可以防止黑线，但是移动地图的时候纹理抖动，并且正常地图依然都移动出现黑线的记录，只是变小了。精灵渲染开fixArtifacts防止黑线，配合纹理的setAntiAliasTexParameters，画面也不会抖动。此方法适用于不缩小的地图。限制摄像机移动？https://blog.csdn.net/gongyiling3468/article/details/47803619/
支持JS脚本插件，存放路径：Windows C:/Users/<USER>/AppData/Local/Tiled/extensions/macOS ~/Library/Preferences/Tiled/extensions/Linux ~/.config/tiled/extensions/示例插件：https://github.com/mapeditor/tiled-extensions官方说明： https://doc.mapeditor.org/en/stable/reference/scripting/插件1，查找object对象:/* * find-object-by-id.js * * This extension adds a 'Find Object by ID' (Ctrl+Shift+F) action to the Map * menu, which can be used to quickly jump to and select an object when you * know its ID. * * The script relies on the recently added TileMap.pixelToScreen conversion * function to work properly for isometric maps. */ function findObjectById(thing, id) { for (let i = thing.layerCount - 1; i >= 0; i--) { const layer = thing.layerAt(i) if (layer.isGroupLayer) { const obj = findObjectById(layer, id) if (obj) return obj } else if (layer.isObjectLayer) { for (const obj of layer.objects) if (obj.id == id) return obj } } return null } let jumpToObject = tiled.registerAction('JumpToObject', function(action) { const map = tiled.activeAsset if (!map.isTileMap) { tiled.alert("Not a tile map!") return } let id = tiled.prompt("Please enter an object ID:") if (id == "") return id = Number(id) const object = findObjectById(map, id) if (!object) { tiled.alert("Failed to find object with ID " + id) return } const pos = map.pixelToScreen ? map.pixelToScreen(object.pos) : object.pos tiled.mapEditor.currentMapView.centerOn(pos.x, pos.y) map.selectedObjects = [object] }) jumpToObject.text = "Find Object by ID" jumpToObject.shortcut = "Ctrl+Shift+F" tiled.extendMenu("Map", [ { separator: true }, { action: "JumpToObject" }, ])插件2，object对象自动对齐，并添加custom属性:/* * AlignObjectToGrid.js */ // if cb return ture, stop walk function walkObjects(root, cb) { for (let i = 0; i < root.layerCount; i++) { const layer = root.layerAt(i) if (layer.isGroupLayer) { if (walkObjects(layer, cb)) return true } else if (layer.isObjectLayer) { if (cb(layer)) return true } } } let jumpToObject = tiled.registerAction('AlignObjectToGrid', function(action) { const map = tiled.activeAsset if (!map.isTileMap) { tiled.alert("Not a tile map!") return } // 计算pos所在grid，修正pos，并自动添加/更新 属性col, row let doAlgin = function(layer) { let alginedObjs = {} // 地图方向:正常 if (TileMap.Orthogonal == map.orientation) { // check layer.name to do align? for (const obj of layer.objects) { // MapObject // get grid, obj's anchorPoint is cc.p(0,1) let col = Math.floor((obj.x + (map.tileWidth / 2)) / map.tileWidth) col = Math.max(col, 0) col = Math.min(col, map.width - 1) let row = Math.floor((obj.y - (map.tileHeight / 2)) / map.tileHeight) row = Math.max(row, 0) row = Math.min(row, map.height - 1) // align pos obj.x = col * map.tileWidth obj.y = (row + 1) * map.tileHeight // fix properties obj.setProperty("col", col) obj.setProperty("row", row) obj.setProperty("orientation", obj.tile.property("orientation")) // check duplicate let index = col + row * map.width if (alginedObjs[index]) { map.selectedObjects = [obj] // select object in map tiled.alert("找到重复坐标对象，请检查!") return true // stop walk } else { alginedObjs[index] = obj } } } } walkObjects(map, doAlgin) }) jumpToObject.text = "Align Object To Grid" jumpToObject.shortcut = "Ctrl+Shift+A" tiled.extendMenu("Map", [ { separator: true }, { action: "AlignObjectToGrid" }, ])