赞
踩
SuperMap平台最新发布的Unity游戏引擎插件(SuperMap 3D SDKs 11i(2022) beta2 for High-Fidelity Rendering_Unity),小编下载后发现帮助文档和接口参考文档里都对Unity插件开发怎样入门没有过多描述,为了方便大家更好的使用该插件进行二次开发,实现更多符合项目的功能,小编身先士卒,将自己摸索的经验分享给大家。
Unity里新建按钮是在GameObject菜单项,点击UI选项再点击Button的步骤下实现的。如下图1.1所示:
按照图1.2操作完成后,点击Play运行会看到图2所示的效果,按钮在运行界面左下方。
button按钮设置文本标签,可以在左侧的层级视图(Hierarchy)面板中找到SuperMap Desktop.prefab 预制体,点击下面菜单会有Button,Button子菜单下面有Text选项,点击右侧会弹出设置Text的属性框,可以修改名称,小编这里将名称修改为“添加GeoBox”,结果如下图1.3所示:
在Assets文件夹下创建一个名为“TextScripts”的文件夹(这个文件夹名可以自定义),在该文件夹里右键Creat一个C# Script,给它重命名为“addGeoBox”(该C# Script文件命名可以自定义),效果如图2.1所示:
先右键创建好的C# Script,点击Open C# Project。点击后如果没有打开vs,而是返回该项目所在文件夹,会发现Unity创建项目没有sln文件。这个解决办法是在 edit -> preferences -> External Tools -> external script editor中设置需要的启动器,设置为使用的VS版本即可,如下图2.2所示:
打开vs后在addGeoBox.cs页面编写代码如下,编写后点击保存。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class addGeoBox : MonoBehaviour
{
public void addGeoBox_Click()
{
Debug.Log("关联测试");
}
}
回到Unity界面在左侧的层级视图(Hierarchy)面板中找到GameObjeect,点击右侧And Component,添加addGeoBox的Script,将cs和自己创建的项目相关联,具体操作如下图2.3所示:
然后在Hierarchy面板中找到SuperMap Desktop.prefab 预制体,点击下面菜单Button,看到右侧设置Button属性的窗口,在这里设置按钮点击事件On Click(),左侧选择项目场景GameObject(见图2.4),右侧选择addGeoBox->addGeoBox_Click(见图2.5),所有设置完后见图2.6。
点击vs附加到Unity运行,在Unity界面Play,点击添加GeoBox的按钮会看到Console页面输出“关联测试”的信息,证明Unity项目和创建的C# Script关联成功(见图2.7)。
实现鼠标在场景点击就会在点击的位置添加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对象 } }
运行效果视频:
Unity插件开发添加GeoBox对象
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。