当前位置: 首页 > news >正文

原型制作神器ProtoPie的使用Unity与网页跨端交互

什么是ProtoPie?

ProtoPie是一款面向设计师的软件原型设计工具,例如制作App界面交互展示,制作好的原型可以一键发布到Web服务器,就可以浏览器访问。由于其内置了大量常用交互类型,以及"程序化"模块,甚至可以用来制作游戏的互动广告,或者直接用于无代码开发简单的应用。

从游戏行业角度来看,ProtoPie可用于:

1. 设计师制作游戏UI界面交互、跳转等流程原型;

2. 制作可交互的、直观的展示PPT;

3. 制作简单的网页试玩广告、游戏CPI测试广告;

4. 制作游戏活动网页、以及其它以网页形式提供的功能;

ProtoPie的使用: 

至于如何下载安装我就不说了,ProtoPie目前还比较小众,年费五六千的价格估计也只有企业用户在用。

软件界面如图:

1. 支持的触发事件:

2. 支持的交互类型:

 

 3. 支持变量,变量赋值、变量使用。条件判断等基础逻辑;

以上内置交互方式对于基础功能可以说覆盖面很广了。但是,还缺乏封装,粒度过小。比如可以封装各种基础的UI类型,比如Button,Button点击后应该具有基本的动效和事件。但目前,这些都需要用户自己实现。

 预览效果:

 

ProtoPie网页与Unity交互:

ProtoPie Connect:需要在官网下载ProtoPie Connect客户端

使用ProtoPie做完原型后,还需要ProtoPie Connect打开制作好的原型文件(.pie)并建立Web服务器,和跨端Socket服务。

首先要在ProtoPie提供了[发送]和[接收]两个触发事件,顾名思义用于发送和接收其它设备发来的数据:

 [渠道]:如果是跨端通讯需要选择[ProtoPie Studio或Connect];

 [信息]:即messageId,信息头,通常用来标记区分以做不同的事;

 [数据]:即value对应的值;

ProtoPie Connect和跨端通讯:

 使用Unity代码交互:

ProtectPie依托于Socket进行跨端交互,可以使用插件SocketIOUnity:GitHub - itisnajim/SocketIOUnity: A Wrapper for socket.io-client-csharp to work with Unity.

其中Socket通讯服务器地址显示在ProtoPie Connect界面左下角;

socketIO = new SocketIOUnity(socketAddress);
socketIO.JsonSerializer = new NewtonsoftJsonSerializer();
socketIO.OnConnected += SocketIO_OnConnected;//成功连接时回调
socketIO.OnDisconnected += SocketIO_OnDisconnected;//断开连接时回调
socketIO.OnError += SocketIO_OnError;
socketIO.Connect(); //连接服务器
socketIO.OnUnityThread("ppMessage", OnMsgReceived); //监听ProtoPie Web端发来的消息

ProtoPie交互统一的消息事件名为"ppMessage",消息内容为json数据,格式为:

{"messageId":"Your Message Head Name", "value":"Your Message Content"}

从Unity向ProtoPie Web端发送消息:

socketIO.EmitStringAsJSON("ppMessage", "{\"messageId\": \"SendMsg\", \"value\": \"Hello World From Unity.\"}");

最终效果如上图类似。当然,如果Unity端使用WebView插件就可以把ProtoPie制作的内容以网页形式嵌入Unity游戏中,以实现Unity逻辑与网页逻辑的交互。对于哪些如游戏活动、应付游戏过审等,将内容放到Web端是一个不错的方案,将网页背景设置为透明,直接覆盖到Unity UI界面上,甚至可以达到以假乱真的效果。

通过Unity与网页交互,相互通讯可以实现很多功能,总之它的应用价值取决去设计师的想象力。

相关文章:

  • 【开源】基于Vue.js的智能停车场管理系统的设计和实现
  • K8S篇之k8s containerd模式fail to pull image certificate signed by unknown authority
  • 基于springboot实现致远汽车租赁平台管理系统项目【项目源码+论文说明】
  • 多状态Dp问题——买卖股票的最佳时机含冷冻期
  • 黑窗口连接远程服务
  • 苹果转移供应链,促中国手机和中国制造更紧密合作,加速技术升级
  • CCNA课程实验-13-PPPoE
  • node插件MongoDB(四)—— 库mongoose 的个性话读取(字段筛选、数据排序、数据截取)(四)
  • django|报错SQLite 3.8.3 or later is required的解决方案
  • 【数据结构】树与二叉树(十):二叉树的先序遍历(非递归算法NPO)
  • cefsharp 93.1.140 如何在js中暴露c#类
  • MySQL的索引和复合索引
  • SpringBoot中required a bean of type ‘java.lang.String‘ that could not be found问题
  • RabbitMQ集群配置以及负载均衡配置
  • 【Linux】tree命令的独特用法
  • 【附node操作实例】redis简明入门系列—字符串类型
  • Computed property XXX was assigned to but it has no setter
  • Docker容器管理
  • ECMAScript入门(七)--Module语法
  • JavaScript-Array类型
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Python socket服务器端、客户端传送信息
  • Redux系列x:源码分析
  • 安装python包到指定虚拟环境
  • 初识 webpack
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 计算机常识 - 收藏集 - 掘金
  • 蓝海存储开关机注意事项总结
  • 浏览器缓存机制分析
  • 盘点那些不知名却常用的 Git 操作
  • 设计模式走一遍---观察者模式
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 项目管理碎碎念系列之一:干系人管理
  • 一份游戏开发学习路线
  • 用Python写一份独特的元宵节祝福
  • 中文输入法与React文本输入框的问题与解决方案
  • 主流的CSS水平和垂直居中技术大全
  • 自动记录MySQL慢查询快照脚本
  • elasticsearch-head插件安装
  • 带你开发类似Pokemon Go的AR游戏
  • ​低代码平台的核心价值与优势
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .Net Redis的秒杀Dome和异步执行
  • .net 验证控件和javaScript的冲突问题
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .NET企业级应用架构设计系列之开场白
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [Android]一个简单使用Handler做Timer的例子