一个快速校验地图资源是否符合兼容要求的小脚本(Cocos Creator3.8.0)

直接挂载运行,自动校验4大核心兼容点,报错直接给解决方案,新手秒懂

import { _decorator, Component, Node, TiledMap, resources, error, log } from 'cc';

const { ccclass, property } = _decorator;

@ccclass('MapCheck')

export class MapCheck extends Component {

@property({tooltip: "填resources下tmx路径,无后缀(例:map/test)"})

mapPath: string = "";

start() {

this.checkMapCompatibility();

}

// 一键校验核心逻辑

async checkMapCompatibility() {

log("开始校验Tiled地图兼容性(适配Cocos3.8.0+Tiled1.4.x)");

if(!this.mapPath) {error("请填写mapPath路径!"); return;}

try {

// 1. 加载地图资源校验

const tmxRes = await resources.load<TiledMap>(this.mapPath);

log("✅ 地图资源加载成功");

// 2. 校验核心兼容项(4大必过项)

this.checkFormat(tmxRes);

this.checkLayer(tmxRes);

this.checkTileSet(tmxRes);

this.checkPath();

log("🎉 所有兼容项校验通过,可正常使用");

} catch (e) {

error(`❌ 地图加载失败:${e}`);

log("💡 大概率原因:路径错误/资源不在resources/格式不兼容");

}

}

// 校验1:地图格式(必为XML,禁用二进制)

checkFormat(tiledMap: TiledMap) {

const tmxAsset = tiledMap.tmxAsset;

if(tmxAsset && tmxAsset.rawXml) {

log("✅ 地图格式为XML,符合兼容要求");

} else {

error("❌ 地图格式错误!需在Tiled导出XML格式,禁用二进制/CSV");

}

}

// 校验2:图层(禁用高版本图层,无中文名称)

checkLayer(tiledMap: TiledMap) {

const layers = tiledMap.getLayers();

const invalidLayers = layers.filter(layer =>

layer.name.includes(" ") || /[\u4e00-\u9fa5]/.test(layer.name)

);

if(invalidLayers.length > 0) {

error(`❌ 图层名非法:${invalidLayers.map(l=>l.name)},需改英文无空格`);

} else {

log("✅ 图层名称+类型符合兼容要求");

}

}

// 校验3:瓦片集(外部引用,无缺失)

checkTileSet(tiledMap: TiledMap) {

const tileSets = tiledMap.getTileSets();

if(tileSets.length === 0) {

error("❌ 瓦片集缺失!Tiled需导出外部tsx,且tmx/tsx/png同目录");

} else {

log(`✅ 瓦片集加载正常,共${tileSets.length}个`);

}

}

// 校验4:路径合法性(无中文)

checkPath() {

if(/[\u4e00-\u9fa5]/.test(this.mapPath)) {

error("❌ 地图路径含中文!需改为纯英文路径");

} else {

log("✅ 地图路径合法");

}

}

}

使用步骤(3步搞定)

  1. 挂载到Canvas节点,无需额外配置

  2. 在编辑器属性面板,填地图resources下路径(例map/test,无.tmx)

  3. 运行项目,控制台直接看结果(红叉报错/绿勾通过)

额外提示

• 报错直接看控制台提示,对应FAQ秒解

• 无需改任何代码,直接用就行

相关推荐
yusheng_xyb15 分钟前
使用TypeScript与React构建高效用户界面
typescript·react·前端开发
向上的车轮2 小时前
TypeORM ——TypeScript 生态的主流 ORM对比
javascript·typescript·typeorm
魔士于安11 小时前
unity 圆盘式 太空飞船
游戏·unity·游戏引擎·贴图·模型
We་ct11 小时前
LeetCode 918. 环形子数组的最大和:两种解法详解
前端·数据结构·算法·leetcode·typescript·动态规划·取反
2501_9181269114 小时前
学习所有6502写游戏动画的语句
汇编·嵌入式硬件·学习·程序人生·游戏
爱学习的程序媛16 小时前
【Web前端】Pinia状态管理详解
前端·vue.js·typescript
CDN36016 小时前
游戏服稳定运行:360CDN SDK 游戏盾实测体验
运维·游戏·网络安全
Wect17 小时前
React Hooks 核心原理
前端·算法·typescript
魔士于安18 小时前
宇宙版地球模拟器
游戏·unity·游戏引擎·贴图·模型
wanhengidc18 小时前
《三国志异闻录》搬砖新游戏 云手机
运维·服务器·数据库·游戏·智能手机