当前位置:网站首页>Unity SKFramework框架(十九)、POI 兴趣点/信息点
Unity SKFramework框架(十九)、POI 兴趣点/信息点
2022-07-02 09:45:00 【CoderZ1010】
目录
一、简介
POI可以理解为场景中的一些有意义的点,例如车站、商场、医院、监控等等,该功能通常用于数字孪生项目,主要目的是将代表这些点位的二维图标与三维目标位置进行“绑定”,实质内容就是世界坐标转屏幕坐标。如下例所示,我们将一个监控点的图标与模型位置进行绑定:

该工具已经上传至我的框架SKFramework中的开发工具箱,如图所示。


框架已经在Github开源,地址:GitHub - 136512892/SKFramework: Unity SKFramework开发框架

二、使用说明
1.二维与三维的匹配
通过Match函数将POI图标与三维目标进行匹配,其中flag参数表示匹配的标识符,系统会将标识符相同的RectTransform与GameObject进行匹配。
/// <summary>
/// 根据标识符进行匹配
/// </summary>
/// <param name="flag">标识符</param>
/// <param name="rectTransform">RectTransform组件</param>
public void Match(string flag, RectTransform rectTransform);
/// <summary>
/// 根据标识符进行匹配
/// </summary>
/// <param name="flag">标识符</param>
/// <param name="target">三维目标</param>
public void Match(string flag, GameObject target);2.移除
通过Delete函数移除一个POI点,移除后将不再进行世界坐标转屏幕坐标的计算。
/// <summary>
/// 根据标识符移除
/// </summary>
/// <param name="flag">标识符</param>
/// <returns>移除成功返回true 否则返回false</returns>
public bool Delete(string flag);3.UI分辨率
代码中默认认为UI使用的分辨率为1920*1080,需要根据实际进行更改

4.Camera相机
世界坐标与屏幕坐标的转换是通过Camera类中的WorldToScreenPoint函数实现的,因此系统中需要一个Camera主相机,系统初始化时会首先获取场景中Tag标签为MainCamera的相机,如果不存在再通过FindObjectOfType函数查找相机。

三、Example 示例
using UnityEngine;
using SK.Framework;
public class Example : MonoBehaviour
{
[SerializeField] private RectTransform rt;
[SerializeField] private GameObject target;
private void Start()
{
POI.Match("监控1", rt);
POI.Match("监控1", target);
}
}
运行后如图所示:

边栏推荐
- 正确遍历EntryList方法
- 模数转换器(ADC) ADE7913ARIZ 专为三相电能计量应用而设计
- [error record] cannot open "XXX" because Apple cannot check whether it contains malware
- JS iterator generator asynchronous code processing promise+ generator - > await/async
- spfa AcWing 852. SPFA judgement negative ring
- Redis sentinel mechanism and configuration
- [opencv learning] [Canny edge detection]
- Linear DP acwing 895 Longest ascending subsequence
- Apply lnk306gn-tl converter, non isolated power supply
- NTMFS4C05NT1G N-CH 30V 11.9A MOS管,PDF
猜你喜欢
![JDBC 预防sql注入问题与解决方法[PreparedStatement]](/img/32/f71f5a31cdf710704267ff100b85d7.png)
JDBC 预防sql注入问题与解决方法[PreparedStatement]

移动式布局(流式布局)

C#运算符

Execute any method of any class through reflection

Unforgettable Ali, 4 skills, 5 hr additional written tests, it's really difficult and sad to walk

Does C language srand need to reseed? Should srand be placed in the loop? Pseudo random function Rand

线性DP AcWing 897. 最长公共子序列

Hash table acwing 840 Simulated hash table
![[error record] cannot open](/img/d3/0435ae698ad635be71729c7c047a22.jpg)
[error record] cannot open "XXX" because Apple cannot check whether it contains malware

JS10day(api 阶段性完结,正则表达式简介,自定义属性,过滤敏感词案例,注册模块验证案例)
随机推荐
Js3day (array operation, JS bubble sort, function, debug window, scope and scope chain, anonymous function, object, Math object)
Redis avalanche, penetration, breakdown
Linear DP acwing 897 Longest common subsequence
To bypass obregistercallbacks, you need to drive the signature method
moon
Post order traversal sequence of 24 binary search tree of sword finger offer
Obtain file copyright information
移动式布局(流式布局)
[opencv learning] [common image convolution kernel]
通过反射执行任意类的任意方法
计数类DP AcWing 900. 整数划分
Redis introduction, scenario and data type
How to get the operating system running PHP- How to get the OS on which PHP is running?
阿里发布的Redis开发文档,涵盖了所有的redis操作
Heap acwing 838 Heap sort
Tencent three sides: in the process of writing files, the process crashes, and will the file data be lost?
堆 AcWing 838. 堆排序
堆 AcWing 839. 模拟堆
JS8day(滚动事件(scroll家族),offset家族,client家族,轮播图案例(待做))
线性DP AcWing 895. 最长上升子序列