Unity中实现可变形的Image

Posted Hello Bug.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity中实现可变形的Image相关的知识,希望对你有一定的参考价值。

一:效果演示


二:实现思路

重写Image的OnPopulateMesh方法,首先获取到顶点坐标,然后不同方向做不同的偏移


三:代码实现

using UnityEngine;
using UnityEngine.UI;

/// <summary>
/// 可变形的image
/// </summary>
public class SkewImage : Image

    [SerializeField]
    private Vector2 rtOffset;//右上
    [SerializeField]
    private Vector2 rbOffset;//右下
    [SerializeField]
    private Vector2 ltOffset;//左上
    [SerializeField]
    private Vector2 lbOffset;//左下

    /// <summary>
    /// 获取偏移量
    /// </summary>
    private Vector3 GetOffset(int i)
    
        if (i == 0)
        
            return lbOffset;
        
        else if (i == 1)
        
            return ltOffset;
        
        else if (i == 2)
        
            return rtOffset;
        
        else if (i == 3)
        
            return rbOffset;
        
        return Vector3.zero;
    

    protected override void OnPopulateMesh(VertexHelper vh)
    
        base.OnPopulateMesh(vh);
        int vertexCount = vh.currentVertCount;
        for (int i = 0; i < vertexCount; i++)
        
            UIVertex vertex = new UIVertex();
            vh.PopulateUIVertex(ref vertex, i);
            vertex.position += GetOffset(i);
            vh.SetUIVertex(vertex, i);
        
    

 

以上是关于Unity中实现可变形的Image的主要内容,如果未能解决你的问题,请参考以下文章

如何在Unity中实现射线判断鼠标所点击的2D游戏对象?

需要帮助在 Unity 3D 中实现移动输入

spine在unity中实现闪白效果

Unity中实现自定义调试器

游戏开发小技Unity中实现Dota里的角色技能地面贴花效果(URP | ShaderGraph | Decal)

游戏开发小技Unity中实现Dota里的角色技能地面贴花效果(URP | ShaderGraph | Decal)