Unity3D
Unity3D 组件用于在大屏中渲染 Unity 项目,并支持大屏与 Unity 项目之间进行通信。
样式
基础属性
参数 | 说明 |
---|---|
图表宽度 | 组件的宽度 |
图表高度 | 组件的高度 |
横坐标 | 组件的横坐标,单位为 px。横坐标为组件左上角距离页面左边界的像素距离 |
纵坐标 | 组件的纵坐标,单位为 px。横坐标为组件左上角距离页面上边界的像素距离 |
旋转角度 | 以组件的中心为中心点,进行旋转,单位为度(°) |
透明度 | 取值范围为 0~1。为 0 时,图表隐藏;为 1 时,图表全部显示。默认为 1 |
数据
字段说明
属性 | 类型 | 描述 |
---|---|---|
configUrl | string | Unity资源配置文件地址 |
Unity资源配置文件应包含如下内容,带⭐️表示必选
属性 | 类型 | 描述 |
---|---|---|
companyName | string | 组织名称 |
productName | string | 项目名称 |
productVersion | string | 项目版本号 |
baseUrl | string | 资源基础地址 |
resources⭐️ | object | 资源内容 |
resources配置内容
属性 | 类型 | 描述 |
---|---|---|
loaderUrl ⭐️ | string | Unity资源加载器文件,支持相对地址和绝对地址,下同 |
dataUrl ⭐️ | string | 包含资源数据和场景的文件 |
frameworkUrl ⭐️ | string | 包含运行时和插件代码的文件 |
codeUrl ⭐️ | string | 包含本机代码的 Web Assembly 二进制文件 |
Unity资源配置文件示例
{
"companyName": "Uniplore",
"productName": "FactoryTest",
"productVersion": "0.0.1",
"baseUrl": "https://uniplore-docs.oss-cn-chengdu.aliyuncs.com/bigscreen/unity/UnityWebGL",
"resources": {
"loaderUrl": "Factory.loader.js",
"dataUrl": "Factory.data",
"frameworkUrl": "Factory.framework.js",
"codeUrl": "Factory.wasm"
}
}
配置项说明
配置项 | 说明 |
---|---|
数据源 | 点击数据源下拉框,可以修改数据源类型。详情请查看配置组件数据。 |
刷新数据 | 点击刷新数据,组件会按照设置请求最新数据。 |
查看响应数据 | 点击查看响应数据按钮,会将组件数据展示出来。 |
受控模式 | 打开开关,组件初始化状态下不请求数据,仅通过回调 id 或蓝图编辑器配置的方法发起请求数据;关闭开关,可以使用自动更新请求数据。 |
自动更新请求 | 选中后可以设置动态轮询,还可以手动输入轮询的时间频次。 |
交互
事件
事件 | 参数 | 描述 |
---|---|---|
当收到消息时 | eventName : string params : string | 当 unity3D 组件接收到来自 Unity 的消息时(该事件需要对 unity 项目进行额外配置) |
如果希望在大屏接收到来自 Unity 的消息,还需按照如下配置
- 打开 Unity 项目,在
Assets
目录下新建Plugins
文件夹 - 在
Plugins
中添加 jslib 插件,插件内容如下
// javascript_extend.jslib
mergeInto(LibraryManager.library, {
deliverMessage: function (str, args) {
const eventName = UTF8ToString(str);
const params = UTF8ToString(args);
__UnityLib__.deliverMessage({ eventName, params });
},
});
- 在 c#中向大屏发送消息, 可参考如下脚本
using UnityEngine;
using System.Runtime.InteropServices;
public class Test : MonoBehaviour
{
// 声明插件中的方法
[DllImport("__Internal")]
private static extern void deliverMessage(string eventName, string args);
// 需要发送消息的位置
public void TestSendMessage(string param)
{
// 调用插件提供的方法
deliverMessage("login", param);
}
}
动作
动作 | 参数 | 描述 |
---|---|---|
发送消息 | objectName : Unity 场景中对象的名称 methodName : Unity 脚本中方法的名称 params : 传递的参数 | 向 Unity 实例对象 发送消息,调用一个公共方法 。 |
如果希望向 Unity 发送消息,可参考如下蓝图编辑器配置, 需要注意的是parmas
只支持字符串,如果希望传递对象,可将对象转换为 json 字符串,然后在 unity 中再转换为对象