一个快速校验地图资源是否符合兼容要求的小脚本(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秒解

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

相关推荐
军军君015 小时前
Three.js基础功能学习十八:智能黑板实现实例五
前端·javascript·vue.js·3d·typescript·前端框架·threejs
军军君018 小时前
Three.js基础功能学习十四:智能黑板实现实例一
前端·javascript·css·typescript·前端框架·threejs·智能黑板
We་ct10 小时前
LeetCode 172. 阶乘后的零:从暴力到最优,拆解解题核心
开发语言·前端·javascript·算法·leetcode·typescript
军军君0110 小时前
数字孪生监控大屏实战模板:可视化数字统计展示
前端·javascript·vue.js·typescript·echarts·数字孪生·前端大屏
世人万千丶10 小时前
开源鸿蒙跨平台Flutter开发:成语接龙游戏应用
学习·flutter·游戏·华为·开源·harmonyos·鸿蒙
兔子零102411 小时前
Claude Code 都把宠物养进终端了,我做了一个真正能长期玩的中文宠物游戏
前端·游戏·游戏开发
博主花神11 小时前
【TypeScript】梳理
javascript·ubuntu·typescript
howlet212 小时前
AI生成cocos-creator打砖块游戏-跑通第1关(CodeBuddy)
人工智能·游戏·cocos2d
独特的螺狮粉13 小时前
开源鸿蒙跨平台Flutter开发:室内探险游戏应用
开发语言·flutter·游戏·华为·开源·harmonyos·鸿蒙
独特的螺狮粉13 小时前
开源鸿蒙跨平台Flutter开发:手机清理小助手应用
开发语言·flutter·游戏·智能手机·开源·harmonyos·鸿蒙