设计稿转Prefab

前言

现在设计常用蓝湖、 Figma等设计工具,这些工具有直接生成网页的插件,对于网页开发来说很方便,游戏开发者却需要花费很多时间去拼界面。如果能直接生成Prefab,将大大提高开发效率。理论上通过dom元素的位置和样式等属性,可以转换为Prefab。

该插件支持把网页元转成Prefab,可以应用到设计稿转Prefab或者旧有Vue网页项目转Cocos项目。

效果示例:

设计稿生成网页流程

以蓝湖为例,看下蓝湖如何生成Html

美术端操作:

  1. 设置生成代码上传

    2
  2. 调整正确的分辨率,假如设计分辨率是7501624,上传后的蓝湖中的1倍图尺寸为7501624

蓝湖端操作:

  1. 打开设计稿,选中代码标签,点代码下载,设置HTML框架,导出代码

  2. 创建本地server
    静态资源必须放到服务器中,才能在网页中浏览,下面提供一个简单的本地静态服务器创建方法:
  • 新建html5_server.js文件,输入代码
var express = require("express");
var app = express();
app.use(express.static('./static/'));
var port = 1188;
app.listen(port);
console.log("html5_server listen to " + port);
  • 新建一个文件夹,比如新建名为server的文件夹

  • 将html5_server.js 放入server文件夹,打开命令行窗口,切换到该文件夹

  • 安装依赖,终端执行命令: npm install express

  • 启动服务器,终端执行命令: node html5_server.js

  • 在server下新建static文件夹,将蓝湖生成的静态文件拖入到static文件夹下

  • 打开浏览器输入:http://localhost:1188/ 就可以访问到页面了

网页转Prefab

安装Chrome插件

  • 下载扩展代码,下载后目录为dom-ui-parser

  • 打开Chrome扩展管理界面

  • 打开开发者模式
    17

  • 点击加载已解压的扩展程序,选择dom-ui-parser文件夹

  • 安装成功后,显示扩展信息

  • 将插件固定到插件栏,方便使用
    9

  • 点击插件,插件界面如下

开始网页转换

  • 在浏览器中,选中网页中对应dom容器,指定id(双击dom元素可以编辑dom属性)

  • 然后打开dom插件,输入上面指定的id,点击开始就会下载

  • 下载完后就是一个预制体的zip包,解压后,直接拖入Cocos2.x项目就可以了
    4

默认的解压的目录结构是prefab文件和textures文件夹,如果需要调整资源位置,移动文件时一定同时移动资源和资源的meta文件,防止资源uuid变化,导致资源找不到。
自动导入的资源结构比较乱,需要手动调整层级,重命名文件,删除无用图片

Cocos3.x版本适配

目前转换的Prefab是2.x版本,针对3.x项目,可以使用官方的转换插件转成3.x文件

  • 先把下载的Prefab放入cocos2.x版本的项目中

  • 打开cocos3.x的项目,导入cocos2.x的项目

  • 选中资源文件,注意至少要选中一个场景文件,场景可以是空场景

  • 导入完成后重启项目
    15

  • 重新打开项目就可以使用Prefab了,导入的cocos2.x空场景可以删除

  • 由于导入的Prefab未设置相机参数,如果看不到节点,需要修改Prefab根节点对应相机,修改时选择递归修改子节点

插件下载

dom-ui-parser.zip (24.1 KB)

2赞

不明觉厉,不过这个的实际用途有哪些?

如果美术提供的设计稿是蓝湖,可以自动生成Prefab,省去了手动拼界面的时间。类似于PSD转Prefab的功能。

我也认为 web 是最终游戏 UI 的归宿,css 和扩展的组件可以实现很多引擎没有的效果。可以 UI 用 web 而需要高性能的游戏界面再用引擎展示是最好的

最好的方式是 AI 生成 web 游戏界面,结合引擎内开发的游戏内容。可以做到快速开发

然而很多游戏开发者都不会css、vue
而开发游戏只用学引擎就够了

未来不需要你会 css 和 vue,ai 懂的比你多。直接生成了,目前 ai 就可以简单生成 web 内容,简单的说

使用web:ai 训练数据最多,也是目前和未来 ai 程序的目标
使用引擎:ai 需要单独训练数据,还需要接入 MCP,相当于重新开始使用小数据集训练(还要考虑未来 MCP 接口的改变)

其实游戏开发这种简单的页面真不需要多少时间,布局排列,dc调整,滑动窗口调试,聊天调试,各种单选多选,遮罩等才是占大头。举个例子,设计稿就算给你相对整齐的界面,你还是要细节调整节点的顺序

我也觉得,除非设计稿和PSD,能转成UI界面,并且能转成不同状态的UI界面,支持切换,不然程序员识别节点,调整节点的时间并不会比手摆省多少时间。不过工具肯定是好的,说不定某一天就完善了

不能拆成小预支体吗。。。这个预制体看着节点这么多