阅读UGUI源码 一

来源:互联网 发布:刀具寿命如何编程 编辑:程序博客网 时间:2024/05/17 07:05

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

创建空物体,添加组件

这里写图片描述

代码

    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;    }    }

效果

这里写图片描述

原创粉丝点击