阅读UGUI源码 一

显示一张图片,并给图片添加交互

创建空物体,添加组件

这里写图片描述

代码

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

    public class MyImage : MonoBehaviour {

    VertexHelper vertexHelper = new VertexHelper();
    private Mesh mesh;
    public Color color;
    private MeshFilter meshFilter;
    private MeshRenderer meshRenderer;
    private MeshCollider meshCollider;
    public Texture2D texture2D;
    public Camera MainCamera;

    private MeshFilter MeshFilter
    {
        get
        {
            if (meshFilter == null)
                meshFilter = GetComponent<MeshFilter>();
            return meshFilter;
        }
    }

    private MeshRenderer MeshRenderer
    {
        get
        {
            if (meshRenderer == null)
                meshRenderer = GetComponent<MeshRenderer>();
            return meshRenderer;
        }
    }

    private MeshCollider MeshCollider
    {
        get
        {
            if(meshCollider==null)
                meshCollider = GetComponent<MeshCollider>();
            return meshCollider;
        }
    }

    // Use this for initialization
    void Start () {
        InitMesh();
    }

    // Update is called once per frame
    void Update () {
        //碰撞检测
        var ray = MainCamera.ScreenPointToRay(Input.mousePosition);
        RaycastHit hitInfo;
        Physics.Raycast(ray, out hitInfo);
        if(hitInfo.collider!=null&&hitInfo.collider.gameObject!=null)
        {
            if(Input.GetMouseButtonDown(0))
            {
                Debug.Log("Image Clicked");
            }
        }

        Debug.DrawLine(ray.origin, ray.origin + ray.direction*100, Color.red);

        MeshRenderer.material.color = color;
        MeshRenderer.material.mainTexture = texture2D;
    }
    //绘制图片
    private void InitMesh()
    {
        mesh = new Mesh();
        vertexHelper.Clear();
        vertexHelper.AddVert(new Vector2(0,0), color, new Vector2(0,0));
        vertexHelper.AddVert(new Vector2(0,1), color, new Vector2(0,1));
        vertexHelper.AddVert(new Vector2(1,1), color, new Vector2(1,1));
        vertexHelper.AddVert(new Vector2(1,0), color, new Vector2(1,0));
        vertexHelper.AddTriangle(0, 1, 2);
        vertexHelper.AddTriangle(2, 3, 0);
        vertexHelper.FillMesh(mesh);
        MeshFilter.mesh = mesh;
        MeshCollider.sharedMesh = mesh;
    }
    }

效果

这里写图片描述

猜你喜欢

转载自blog.csdn.net/u013933334/article/details/78174979