目 录CONTENT

文章目录

3D试玩游戏资产规范与处理

hananww
2026-07-10 / 0 评论 / 0 点赞 / 27 阅读 / 0 字
温馨提示:
本文最后更新于2026-07-22,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

3D试玩游戏资产规范与处理

公用存储 & 账号 & 文档

  • 共用存储
    • 成稿工程(过往工程)
    • 过往音效资源:`
    • 过往特效资源和素材
  • Cocos 账号
  • 部分资产查找表
  • 特定公司项目参考
  • 项目人员排期表
  • 试玩广告产品手册

资产处理规范

文件夹结构与命名规范 (Naming & File)

  • 🔴 不使用中文、空格或特殊字符:仅使用 A-Z, a-z, 0-9, _, -

    • 拼音:首字母要大写:DaXie
    • 英文:单词首字母要大写:AttackAnimation
  • 🔴 见名知意:拒绝 img_001, test_new_final_v2 这类命名。

  • 🔴 数字编号补零:使用 Hero_001 而非 Hero_1,保证排序正确

assets/
├── Resources/       # ⚠️仅存放需要动态加载(cc.resources.load)的资源
├── Scripts/         # 全局框架代码、管理器、工具类
│   ├── Game/
│   ├── Framework/
│   ├── UI/
│   └── ....
│
├── Res/                     # 美术资产目录
│   ├─── Modles/
│   │   ├── Materials/
│   │   ├─── Meshs/              # 🎨美术资源总目录🎨🎨🎨🎨🎨🎨🎨🎨🎨🎨🎨🎨🎨🎨🎨🎨
│   │   │   ├── Characters/      # 🔵角色资产目录🔵
│   │   │   │   ├── GeneralCharacterAnimation/
│   │   │   │   ├── Hero_001/
│   │   │   │   │   ├── Mesh/
│   │   │   │   │   ├── Textures/
│   │   │   │   │   ├── Animations/
│   │   │   │   │   ├── Prefabs/
│   │   │   │   │   └── Materials/
│   │   │   │   └── Hero_003/
│   │   │   ├── Environments/      # 🟠场景美术目录🟠
│   │   │   │   ├── GeneralEnvironmentsTextures/
│   │   │   │   │   └── xxx.webp
│   │   │   │   ├── Trees/
│   │   │   │   │   ├── GeneralTreesTextures/
│   │   │   │   │   ├── Tree_001.glb
│   │   │   │   │   ├── Tree_001.mtl
│   │   │   │   │   ├── Tree_001.webp
│   │   │   │   │   ├── Tree_002.glb
│   │   │   │   │   ├── Tree_002.mtl
│   │   │   │   │   └── Tree_002.webp
│   │   │   │   ├── HDRI.glb
│   │   │   │   ├── HDRI.mtl
│   │   │   │   └── HDRI.webp
│   │   │   └── Prefabs/         # 模型预制体
│   ├── Shaders/         # Shader 目录 Shader 全放这
│   │   └── xxx.effect/
│   ├── VFX/                    # 💥特效目录💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥💥
│   │   ├── GeneralVisualEffectsTextures/
│   │   ├── Attack/             # 攻击特效文件夹
│   │   │   ├── Mesh/           # 攻击特效模型
│   │   │   ├── Textures/       # 攻击特效贴图
│   │   │   └── Prefabs/        # 攻击特效预制体
│   │   ├── hit/                # 受击特效文件夹
│   │   │   ├── Mesh/           # 受击特效模型
│   │   │   ├── Textures/       # 受击特效贴图
│   │   │   └── Prefabs/        # 受击特效预制体 
│   ├── AnimationClips/         # 动画剪辑目录、动画图等
│   │   ├── xx.anim
│   │   └── xx2.anim
│   ├── Audio/                  # 📢 音频资源📢📢📢📢📢📢📢📢📢📢📢📢📢📢📢📢📢📢
│   │   ├── BGM/
│   │   ├── SFX/
│   │   └── 其他/
│   ├── UI/                     # ⚪️ UI 图集、图标、字体⚪️⚪️⚪️⚪️⚪️⚪️⚪️⚪️⚪️⚪️⚪️⚪️⚪️⚪️
│   │   ├── Atlas/              # 自动图集 / 散图目录
│   │   ├── Icons/
│   │   ├── Icons/
│   │   └── Prefabs/
│   ├── Terrains/        # 地形目录
│   │   ├── GeneralTerrainsTextures/
│   │   └── XX_001.terrain
├── Scenes/                     # ⛰️ 场景文件目录 (.scene)⛰️⛰️⛰️⛰️⛰️⛰️⛰️⛰️⛰️⛰️⛰️⛰️⛰️
│   ├── Login.scene
│   ├── MainGame.scene
│   └── Test.scene               # 测试/调试场景
│
└── Docs/                        # 策划文档、参考图、协议文档(不参与构建)
  • ⚠️ 什么【不应该】放进 resources
    • resources 目录是一个特殊且昂贵的文件夹。只有当你无法通过编辑器拖拽建立静态引用,必须在代码运行时通过 resources.load() / loadDir() 等 API 获取资源时,才应该将资源放入此目录。
      • 配置与数据文件
        • JSON / CSV / Excel 导出的配置表:关卡配置、怪物属性、道具表、多语言文本等。
        • 二进制数据:自定义格式的存档文件、加密数据包。
        • 原因:这些数据通常在运行时根据逻辑按需读取,且无法在编辑器中预知具体加载哪一份。
      • 运行时才能确定路径的资源
        • 角色换装/皮肤系统:resources.load(\skins/ $ {skinId}_body, ...)`
        • 动态头像/昵称:从服务器获取 ID 后加载对应头像
        • 多语言切换:根据当前语言代码加载对应的文本/语音包
        • 关卡/章节内容:根据玩家进度动态决定加载哪个关卡预制体
      • 按需创建的 UI
        • 动态列表项:背包格子、排行榜条目、聊天记录气泡等(通过预制体 + 代码批量 instantiate)
        • 弹窗/对话框:不在默认场景中,由用户操作触发才加载显示的界面
        • Toast / Tips 提示:全局通用的轻量级反馈组件
      • 部分音频资源
        • 大量音效:如不同武器的打击音、不同怪物的叫声,数量多且不确定何时播放
        • 动态 BGM:根据场景/情绪实时切换的背景音乐
        • ⚠️ 注意:常驻 BGM 和核心 UI 音效应放在场景或 Bundle 中静态引用,不要全塞进 resources
❌ 不应放入 ✅ 正确做法 原因
场景文件 (.scene) 用 Bundle 或 director.loadScene 场景应独立管理,resources 不支持直接加载场景
所有贴图/模型/动画
按模块放入对应 Bundle resources 内资源全部参与构建,无法按需剔除
常驻 UI 预制体 直接在场景中拖拽引用 静态引用零开销,无需动态加载
Shader / Effect 放在 Bundle 或全局目录 材质系统有自己的管理机制
字体文件 (TTF/BMFont) 放 Bundle 或静态引用 字体通常体积大,应随所属模块加载
整个美术/音频文件夹 拆分到各功能 Bundle 会导致包体爆炸、启动变慢

变换与轴向 (Transform & Pivot)

  • 🔴 缩放是否已应用,即缩放值必须为 (1, 1, 1)

  • 🔴 旋转是否已归零?

  • 🔴 轴心点位置是否正确?(例如:角色/树木的 Pivot 必须在底部Z=0,道具在中心)。

  • 🔴 模型的朝向是否正确?(Cocos Y 轴朝上,Z 朝前,X 朝右)。


网格与拓扑 (Mesh & Geometry)

  • 🔴 是否存在 N-gon(多于4条边的多边形)?(引擎通常只认三角面或四边面)。

  • 🔴 是否存在孤立顶点?

  • 🔵 未融合的重合点?

  • 🟠 面数/顶点数是否超过了该级别资产的上限?(角色模型 < 3000面,小道具<1000面)。

    • 场景道具:通常 < 1000 面 大小:< 100kb
    • 角色模型:通常 < 3000 面 大小:< 300kb
  • 🟠 是否应用了修改器?

  • 🔵 合并网格:同一材质的部件合并,一个模型尽量只有 1 个 Mesh。每多一个 Mesh = 多一个 DrawCall。


UV与法线 (UV & Normals)

  • 🔴 UV是否存在重叠 ?(特殊UV,如平铺材质允许重叠)。

  • 🔴 UV是否超出了 0-1 空间(第一象限)?

  • 🔴 法线是否一致?(是否存在反转法线 / 内部面)。

  • 🔵 硬边/软边(Smooth Groups)设置是否合理?(通常UV断开的地方,法线也必须断开/硬化)。


材质与层级 (Material & Hierarchy)

  • 🔵 一个模型网格(Mesh)上赋予的材质球数量是否过多?(通常建议1个,最多不超过3个,否则会增加DrawCall)。

  • 🔵 场景层级是否干净?(不能有隐藏的辅助线、多余的灯光、未删除的测试几何体)。


动作与骨骼(Animation & Skeleton)

  • 🔴动画处理:

    • 帧数率 30fps
    • 总帧数 < 60帧
    • 原模型:导出拥有模型、骨骼、蒙皮信息的 GLB 文件;
    • 模型动画:不带蒙皮的只包含动画的 GLB 文件。
  • 骨骼数量:

    • 尽量只保留基础的人体骨骼,骨骼数量不要太多一般会≤60 根骨骼。骨骼数量过多动画体积会越大。

纹理贴图(Textures)

  • 视项目情况(模型在画面内的占比)分配模型贴图大小,一般小于等于 256×256

  • 格式:Webp>jpg>png (不能用 tga、psd、exr 等格式大图)

  • 尺寸64×63 ≈4kb;128×128 ≈12kb;256×256 ≈16kb;512×512 ≈30kb(尺寸需要为,2次幂)

  • 压缩

    • png :使用 tinypng 网站压缩
    • webp :使用 ImageForge.exe 程序压缩
    • jpg:使用 ImageForge.exe 程序压缩
      ImageForge.exe
  • 通道打包(一般只用一张Diffuse):将 Metallic(R)、Roughness(G)、AO(B) 合并为一张 MRAO 贴图,节省 2 张纹理采样。


模型导出 & 格式 (ExportMesh & MeshFormat)

格式:GLB

要求:删除材质,保留材质插槽。

比例:

  • 甲方如有角色资产,则以甲方角色做参考。
  • 没有角色资产以 cocos 一个立方体为1m为参考
    • blender 默认立方体 缩放到 0.5,0.5,0.5
    • Maya 生成立方体 缩放到 100,100,100

其他 (Other)

🔴cocos 场景节点后边不要有带 + 标记的节点

  • 带 + 号的节点表示是预制体未识别的节点,导入模型后放到场景中,默认模型是模型预制体 节点是绿色的,复制节点下的模型节点是白色带 + 号。带加号就是为解析的预制体节点。

    • 解决方法:
      1. 移除预制体关联,
      2. 把父节点拉入资源管理器把它变成真的 cocos 预制体

🔴** cocos 引擎模型压缩与图片压缩**

  • cocos 自带压缩功能,可在资产对应的属性检查器中开启。

🟢 AI 辅助场景搭建

  • 远景模型可用 ai 生成,生成后可用maya和3dmax减面,平面光照与远景看都过得去(无法手工更改贴图和模型,布线糟糕,如果客户需要更改 AI 模型部分效果将无法修改,只能照着模型手工重做)

🟢 cocos 版本统一 3.8.3(暂定)

🔵 cocos 3d场景美术包体通常会控制在 3mb 以内

  • 通常使用 super-html 打包查看,可在应用商店下载。

🟢 **常用材质 builtin-standard、builtin-unlit、builtin-toon **

  • 此数值整体提高可以提亮材质,单个提高可以提亮单独颜
    image

  • 双面显示方式:剔除模式改为NONE,剔除背面前面可见,剔除前面背面可见。
    image

  • 打开材质实例,减少 Drawcall 数量。带骨骼动画的模型不要打开。
    image

🟢 不使用默认 skybox 的 HDRI图,压缩包体

  • 关闭 skybox envmap设置为空,可用mesh代替
    image

⚠️ 功能剪裁

  • 通常会剪裁项目不需要的功能,压缩包体。视项目实际情况而定,下图仅供参考。
    image

资产处理技巧

🟢 虚幻引擎资产导入导出技巧(FBX)

  • 模型导入示例↓↓↓↓:

    • 情境一:甲方资产含xxx.uproject 文件,右键该文件点击 Open
      image
    • 情境二:甲方资产不含xxx.uproject 文件,含 Content 文件夹,把 Content 文件夹下的文件夹放到自己建立的工程,下的 Content 里。
      image
  • 模型导出示例↓↓↓↓:
    image
    image

🟢 Unity 资产导入导出技巧(FBX)

  • 资产导入示例↓↓↓↓:

    • .unitypackage 直接拖进项目管理器
    • 只有 Asset 文件夹也直接拖入项目管理器
  • 资产导出示例↓↓↓↓:

    • 情境一:unity 资产为 .asset 文件:开启自带插件 FBX Exporter 解决工程报错(删除所有脚本)用插件导出
      image
      image
      image
      image
    • 情境二:unity 资产为 .fbx .webp 等文件,直接定位到资源管理器复制即可。

🔴 使用 Blender 将 FBX 导出为 GLB

  • 资产导入示例↓↓↓↓:

    • 情境一:Maya、3dsMax 的 FBX 导入 blender 显示异常。安装 Better FBX 插件导入
      image
      image
  • 资产导出示例↓↓↓↓:

    • 开启 压缩选项;保留材质插槽;应用修改器
      image
      image
      image
    • 角色基础模型:开启蒙皮&形态键。纯动画:关闭形态键和蒙皮,删除场景角色mesh
      image

🟢 使用 Blender 进行模型自动减面

  • 为模型添加精简修改器。
    image

🟢 项目资源占用查看技巧

🟢 通过 Mixamo 获取免费可商用动画资产

https://www.mixamo.com/

🟢 动画重定向(Maya)

  • 可以用Maya的控制Humen IK 把其他骨骼的的动画映射到甲方的骨骼模型资产上
    image

Git_协作流程

🟢 远程仓库选择

平台 链接 优点 缺点
GitHub https://github.com/ 生态好 国内速度有时不稳定(需要科学上网,都是英文)
Gitee https://gitee.com/ 国内速度快 免费版私有仓库限制多(上限5名成成员合作)

🔴 Git_下载 & 安装

🔴 日常工作流程

graph LR
    A[开始协作] --> B{是否拉取主分支最新代码?}
    B -->|否| C[执行 git pull origin main]
    B -->|是| D[创建功能分支]
    C --> D
    D --> E[进行开发修改]
    E --> F{是否完成开发?}
    F -->|否| E
    F -->|是| G[提交修改到功能分支]
    G --> H[对比主分支差异]
    H --> I{是否有冲突?}
    I -->|是| J[解决冲突]
    I -->|否| K[合并到主分支]
    J --> L{冲突文件类型?}
    L -->|文本文件| M[手动编辑解决]
    L -->|Cocos资源文件| N[用编辑器重新操作]
    L -->|.meta文件| O[保留当前分支版本]
    M --> P[标记已解决]
    N --> P
    O --> P
    P --> K
    K --> Q[在Cocos编辑器验证]
    Q --> R{验证通过?}
    R -->|是| S[推送合并结果]
    R -->|否| T[修复问题并重新验证]
    T --> Q
    S --> U[完成协作]
    
    classDef decision fill:#f9f,stroke:#333,stroke-width:1px;
    classDef action fill:#e6f7ff,stroke:#1890ff;
    classDef warning fill:#fff7e6,stroke:#faad14;
    
    class B,I,L,R decision;
    class C,D,E,G,H,J,M,N,O,P,Q,T,S,U action;
    class J,T warning;

🟢 忽略( .gitignore)文件配置

  • 与官方版本略有不同:因为常用 super-html 插件打包。如果需要上传 super-html 插件到远程仓库就要把node_modules/ 注释掉

    .gitignore

🔴 Cocos 资源与场景协作规范(防冲突指南)

  • 场景分工

    • 核心场景:指定负责人人负责维护,其他人不直接修改。要做使用场景测试就复制一份主场景。
    • 避免多人同时编辑同一场景
  • 预制体化

    • 可复用的 UI 模块、角色、怪物、特效,制作成 Prefab。
    • 修改时,优先在 Prefab 内部修改,减少在 Scene 中的直接编辑。
  • 及时沟通

    • 修改公共场景(核心场景)或核心预制体前,通知相关人员。
  • 版本锁定

    • 禁止使用不同版本打开项目。
  • 提交信息

    • 简短描述-精炼总结说清楚做了什么

🟢 Git 图形化客户端

客户端名称 工具形态 链接 核心优势与适合人群 使用教程
🐢 TortoiseGit(推荐) 资源管理器右键 https://tortoisegit.org/ 管理非代码资源(图片/音频/Cocos场景)最直观。 https://blog.csdn.net/qq_19688207/article/details/143226172
🌳 SourceTree 独立软件窗口 https://www.sourcetreeapp.com/ 功能大而全,有中文,操作复杂。
🐱 GitHub Desktop 独立软件窗口 https://github.com/apps/desktop 极简(功能有限)。没有复杂操作,英文界面
💻 VS Code 内置 编辑器侧边栏 适合边写代码边提交的程序员。
0

评论区