当前位置:   article > 正文

SuperMap Hi-Fi 3D SDK 11i(2022) for Unity插件开发入门——点击按钮在球面场景添加Geobox对象_unity gis插件

unity gis插件

前言

  SuperMap平台最新发布的Unity游戏引擎插件(SuperMap 3D SDKs 11i(2022) beta2 for High-Fidelity Rendering_Unity),小编下载后发现帮助文档和接口参考文档里都对Unity插件开发怎样入门没有过多描述,为了方便大家更好的使用该插件进行二次开发,实现更多符合项目的功能,小编身先士卒,将自己摸索的经验分享给大家。

1. 新建按钮

1.1 操作步骤

  Unity里新建按钮是在GameObject菜单项,点击UI选项再点击Button的步骤下实现的。如下图1.1所示:
图1

图1.1 新建按钮操作步骤

1.2 效果截图

  按照图1.2操作完成后,点击Play运行会看到图2所示的效果,按钮在运行界面左下方。
在这里插入图片描述

图1.2 新建按钮运行效果

  button按钮设置文本标签,可以在左侧的层级视图(Hierarchy)面板中找到SuperMap Desktop.prefab 预制体,点击下面菜单会有Button,Button子菜单下面有Text选项,点击右侧会弹出设置Text的属性框,可以修改名称,小编这里将名称修改为“添加GeoBox”,结果如下图1.3所示:
在这里插入图片描述

图1.3 按钮设置标签

2. 创建C# Script并关联

2.1 创建C# Script

  在Assets文件夹下创建一个名为“TextScripts”的文件夹(这个文件夹名可以自定义),在该文件夹里右键Creat一个C# Script,给它重命名为“addGeoBox”(该C# Script文件命名可以自定义),效果如图2.1所示:
在这里插入图片描述

图2.1 创建C# Script

2.2 代码编写

  先右键创建好的C# Script,点击Open C# Project。点击后如果没有打开vs,而是返回该项目所在文件夹,会发现Unity创建项目没有sln文件。这个解决办法是在 edit -> preferences -> External Tools -> external script editor中设置需要的启动器,设置为使用的VS版本即可,如下图2.2所示:
在这里插入图片描述

图2.2 设置vs启动器

  打开vs后在addGeoBox.cs页面编写代码如下,编写后点击保存。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class addGeoBox : MonoBehaviour
{
   public void addGeoBox_Click()
    {
        Debug.Log("关联测试");
    }  
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2.3 关联设置

  回到Unity界面在左侧的层级视图(Hierarchy)面板中找到GameObjeect,点击右侧And Component,添加addGeoBox的Script,将cs和自己创建的项目相关联,具体操作如下图2.3所示:
在这里插入图片描述

图2.3 And Component

  然后在Hierarchy面板中找到SuperMap Desktop.prefab 预制体,点击下面菜单Button,看到右侧设置Button属性的窗口,在这里设置按钮点击事件On Click(),左侧选择项目场景GameObject(见图2.4),右侧选择addGeoBox->addGeoBox_Click(见图2.5),所有设置完后见图2.6。
在这里插入图片描述

图2.4 设置与button关联的项目场景

在这里插入图片描述

图2.5 设置Button点击事件

在这里插入图片描述

图2.6 button关联设置后效果展示

2.4 运行结果

  点击vs附加到Unity运行,在Unity界面Play,点击添加GeoBox的按钮会看到Console页面输出“关联测试”的信息,证明Unity项目和创建的C# Script关联成功(见图2.7)。
在这里插入图片描述

图2.6 关联成功运行结果展示

3. 添加Geobox对象

3.1编写代码

  实现鼠标在场景点击就会在点击的位置添加Geobox对象,代码如下:

using SuperMapSDK;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class addGeoBox : MonoBehaviour
{
   public void addGeoBox_Click()
    {
        Debug.Log("关联测试");
        SupermapGIS.Instance.OnMouseClick += Scene_OnMouseClick;//场景鼠标点击触发事件
    }
    /// <summary>
    /// 场景鼠标点击触发事件
    /// </summary>
    private void Scene_OnMouseClick()
    {
        Scene scene = SupermapGIS.Instance.Realspace.SceneControl.Scene;//获取场景

        var pos = SupermapGIS.Instance.GetMouseWorldPos();//获取鼠标当前精度的地理坐标
        var lon = pos.x;//经度
        var lat = pos.y;//维度
        var height = pos.z;//高程      
        
        GeoBox geoBox = new GeoBox();
        Vector3d vector3d = new Vector3d(lon, lat, height);//构建三维位置坐标
        geoBox.Position = vector3d;//设置位置坐标
        geoBox.Height = 10;//设置高程
        geoBox.BottomSize = new Vector2(10, 10);//设置GeoBox对象的底部长和宽

        scene.TrackingLayer.Add(geoBox, "第一个box");//在场景的跟踪图层添加GeoBox对象

    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

3.2运行结果

在这里插入图片描述

图3.1 运行后鼠标点击添加Geobox对象效果图

运行效果视频:

Unity插件开发添加GeoBox对象

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/90939
推荐阅读
相关标签
  

闽ICP备14008679号