开发者中心 开发者中心
  • 简体中文
  • English
视频教程
敢为云网站
  • 6.0版本
  • 6.1 版本
视频教程
敢为云网站
  • 平台概述
  • 平台功能
  • 平台安装
  • 开发者指南
    • 协议插件开发
    • 扩展插件开发
    • 报警插件开发
    • 应用插件开发
    • Web可视化开发
    • 3D可视化开发
      • 低代码开发
      • 二次开发
        • 概述
          • IoTCenter 3D可视化平台
          • 技术要求
          • 开发包结构
          • IoTCenter 3D指南
            • 平台基本工作原理
            • 规范和代码要求
        • 编辑器插件
        • 开发实战
        • 附录
    • 桌面可视化开发
    • 小程序开发
  • 项目实战
  • 附录

概述

# 概述

# IoTCenter 3D可视化平台

瀚海低代码应用开发平台的三维可视化部分,平台通过大屏/巨屏动态融合,数字孪生、自然语音交互以及协同信息处理,打造酷炫的大数据可视化平台和领导驾驶舱。

# 技术要求

要进行二次开发,需要掌握 C# (opens new window)和Unity (opens new window)的相关知识,可以结合Unity官方文档 (opens new window)学习Unity的相关知识。

# 开发包结构

开发者可以通过3D开发开源仓库 (opens new window)获取开发包(仓库中也提供了3D可视化平台安装包,解压即可使用)进行开发,其目录结构如下所示:

# IoTCenter 3D指南

介绍重要的IoTCenter3D相关概念。

# 平台基本工作原理

平台使用AssetBundle (opens new window)技术来加载自定义的设备、场景、UI面板、UI弹窗预制体 (opens new window),所以二次开发主要是开发出平台所规定的各类预制体,并且打包成符合要求的**AssetBundle (opens new window)**包。

由于AssetBundle包不支持代码,平台通过设置程序集 (opens new window)Scene.Module,将设备、场景、UI面板、UI弹窗的二次开发代码包含在Scene.Module中,然后平台引用编译后的Scene.Module.dll,从而正确运行代码。

提示

关于AssetBundle可以通过官方教程 (opens new window)进行了解,官方教程介绍了AssetBundle的功能。如果想快速了解如何打包,请查看官方教程的这一部分 (opens new window)为预制体设备设置打包信息,然后使用工具 (opens new window)打包。

# 规范和代码要求

以下将详细介绍场景、设备、UI控件、UI弹窗/面板开发的详细规范和代码要求

场景(Scene)
  1. 平台中的每个场景对应Unity中的Scene (opens new window),开发者只需要新建场景,并运用Unity的能力在其中创作即可。当创作完成,开始修改场景的AssetBundle信息,平台规定了场景的AssetBundleName和AssetBundleVariantName。
  • AssetBundleName:确保名称唯一并且是全部小写(如scene_1)。

  • AssetBundleVariantName:必须为assetbundle。

提示

关于设置AssetBundle信息可以点击在Project (opens new window)中的场景,在Inspector (opens new window)窗口的最底部可以设置AssetBundleName和AssetBundleVariantName。

  1. 设置完成后,开发者将生成的AssetBundle包放在3D可视化平台的\IoTCenter 3D_Data\StreamingAssets\AssetBundle\Scenes目录下,就可以在3D平台中看到自定义的场景了。

  2. 开发者生成AssetBundle包和dll代码并将其放在指定位置,运行平台后参考低代码开发-常用功能介绍中创建场景的内容进行查看。

设备
  1. 一切从预制体开始,开发者在Hierarchy (opens new window)中制作单个物体或者是嵌套父子层级的物体之后,需要将父游戏对象制作为预制体 (opens new window),放在Project (opens new window)中。

  2. 接下来将修改预制体的AssetBundle信息,平台规定了设备的AssetBundleName和AssetBundleVariantName。

  • AssetBundleName:必须为deviceres。

  • AssetBundleVariantName:必须为assetbundle。

提示

关于设置AssetBundle信息可以点击在Project (opens new window)中的场景,在Inspector (opens new window)窗口的最底部可以设置AssetBundleName和AssetBundleVariantName。

  1. 设置完成后,开发者将生成的AssetBundle包放在3D可视化平台的\IoTCenter 3D_Data\StreamingAssets\AssetBundle\Devices目录下,就可以在平台中看到自定义的设备了。

  2. 编写代码让其有丰富的交互能力,但是平台规定了代码的写法,开发者只需要做简单的适配即可。首先需要在预制体的父物体添加派生自DeviceBase的自定义类

    public class customize : DeviceBase
    {
    
    }
    

    DeviceBase(参考附录-Class部分的内容)可以重写逻辑从而满足自己的项目需求,部分函数可以由开发者调用,部分函数由平台管理,为了帮助开发者理解和更好的适配平台,给出被平台管理的函数生命周期如下图所示:

    至此开发者就可以发挥C#的能力构建丰富的交互内容了。

  3. 开发者生成AssetBundle包和dll代码并将其放在指定位置,运行平台后参考低代码开发-常用功能介绍中模板设备的内容进行查看。

UI控件
  1. 跟设备一样同样从预制体开始,开发者在Hierarchy (opens new window)中制作单个物体或者是嵌套父子层级的物体之后,需要将父游戏对象制作为预制体 (opens new window),放在Project (opens new window)中。

  2. 接下来将修改预制体的AssetBundle信息,平台规定了UI控件的AssetBundleName和AssetBundleVariantName。

  • AssetBundleName:必须为uicontrols。

  • AssetBundleVariantName:必须为assetbundle。

提示

关于设置AssetBundle信息可以点击在Project (opens new window)中的场景,在Inspector (opens new window)窗口的最底部可以设置AssetBundleName和AssetBundleVariantName。

  1. 设置完成后,开发者将生成的AssetBundle包放在3D可视化平台的\IoTCenter 3D_Data\StreamingAssets\AssetBundle\Devices目录下,就可以在平台中看到自定义的UI控件了。

  2. 编写代码让其有丰富的交互能力,但是平台规定了代码的写法,开发者只需要做简单的适配即可。首先需要在预制体的父物体添加派生自UIControl的自定义类

    public class customize : UIControl
    {
    
    }
    

    开发者可以开放属性,当用户在平台的编辑模式下,点击UI控件就会显示出可配置属性,以下是标准写法:

    /// <summary>
    /// 用于公开给用户配置的属性
    /// </summary>
    [SerializeField]
    private string m_url = "";
    public string Url
    {
        get { return m_url; }
        set { m_url = value; }
    }
    

    UIControl(参考附录-Class部分的内容)可以重写逻辑从而满足自己的项目需求,部分函数可以由开发者调用,部分函数由平台管理,为了帮助开发者理解和更好的适配平台,给出被平台管理的函数生命周期如下图所示:

    至此开发者就可以发挥C#的能力构建丰富的交互内容了。

  3. 开发者生成AssetBundle包和dll代码并将其放在指定位置,运行平台后参考低代码开发-常用功能介绍中UI控件组态功能的内容进行查看。

UI弹窗/面板
  1. UI弹窗有两种应用场景:

    • 和设备组合使用,当点击设备图标时,所弹出的窗口就是UI弹窗

      开发者需要修改DeviceFormId.cs文件,将自定义的UI弹窗预制体名称添加在枚举中(需要保证枚举名与界面类名一致),才能在DeviceFormId属性

    • 开发者通过接口自行打开或关闭UI弹窗

  2. 跟设备一样同样从预制体开始,开发者在Hierarchy (opens new window)中制作单个物体或者是嵌套父子层级的物体之后,需要将父游戏对象制作为预制体 (opens new window),放在Project (opens new window)中。

  3. 接下来将修改预制体的AssetBundle信息,平台规定了UI控件的AssetBundleName和AssetBundleVariantName。

  • AssetBundleName:必须为uiforms。

  • AssetBundleVariantName:必须为assetbundle。

提示

关于设置AssetBundle信息可以点击在Project (opens new window)中的场景,在Inspector (opens new window)窗口的最底部可以设置AssetBundleName和AssetBundleVariantName。

  1. 设置完成后,开发者将生成的AssetBundle包放在3D可视化平台的\IoTCenter 3D_Data\StreamingAssets\AssetBundle\Devices目录下,就可以在平台中看到自定义的UI弹窗了。

  2. 编写代码让其有丰富的交互能力,但是平台规定了代码的写法,开发者只需要做简单的适配即可。首先需要在预制体的父物体添加派生自DeviceUIFormBase的自定义类

    public class customize : DeviceUIFormBase
    {
    
    }
    

    开发者可以开放属性,当用户在平台的编辑模式下,点击UI弹窗就会显示出可配置属性,以下是标准写法:

    /// <summary>
    /// 用于公开给用户配置的属性
    /// </summary>
    [SerializeField]
    private string m_url = "";
    public string Url
    {
        get { return m_url; }
        set { m_url = value; }
    }
    

    DeviceUIFormBase(参考附录-Class部分的内容)可以重写逻辑从而满足自己的项目需求,部分函数可以由开发者调用,部分函数由平台管理,为了帮助开发者理解和更好的适配平台,给出被平台管理的函数生命周期如下图所示:

    至此开发者就可以发挥C#的能力构建丰富的交互内容了。

  3. 开发者生成AssetBundle包和dll代码并将其放在指定位置,运行平台后点击对应设备时弹出UI弹窗。

上次更新: 5/22/2023, 7:05:49 PM

← 常见问题 编辑器插件→

目录
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式