优化小地图(非RawImage方法,节省性能)

发布时间:2023年12月23日

一、小地图设计

  1. 首先俯视需要用到的地图,截一张俯视图(ps让美工修一下,大小可以采用512 * 512 其他的也可以)。
  2. 我们创建一个大小一样cube让这个大小刚好包围我们需要的地图场地。
  3. 通过3D世界坐标转换成屏幕的2D坐标显示小地图。

二、功能实现

1.截取俯视图

在这里插入图片描述

2.创建Cube包裹住场地,并且创建一个子物体坐标为(0,0,0)**

在这里插入图片描述
在这里插入图片描述
此时cube的子物体的坐标如下
在这里插入图片描述

这里说一下我们只需要将我们小地图中的人物的transform.position 实时赋值给 当前子物体,然后获得子物体的localposition就可以获得当前的坐标比例,然后将其转换到2D UI上即可

3.创建UI显示小地图

在这里插入图片描述
BG就是半透的球场
Role1是下图的红色和黄色小标签
小地图如下
在这里插入图片描述

坐标转换代码如下:


    /// <summary>
    /// 需要转换在小地图的人物
    /// </summary>
    public Transform role;

    /// <summary>
    /// 球场子物体
    /// </summary>
    public Transform pos1;

    /// <summary>
    /// 球场
    /// </summary>
    public Transform Ground;

    /// <summary>
    /// 小地图Img
    /// </summary>
    private Image Img;

	/// <summary>
    /// 父级宽度
    /// </summary>
    private float width;
	
	/// <summary>
    /// 父级高度
    /// </summary>
    private float height;

    private void Start()
    {
        Img = GetComponent<Image>();
        width = Img.transform.parent.GetComponentInParent<RectTransform>().sizeDelta.x;
        height = Img.transform.parent.GetComponentInParent<RectTransform>().sizeDelta.y;
    }

    private void Update()
    {
        pos1.position = role.position;
        transform.localPosition = new Vector3 (pos1.localPosition.z * width, - pos1.localPosition.x * height, 0);
    }

文章来源:https://blog.csdn.net/qq_42194657/article/details/135170853
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。