显示一张图片,并给图片添加交互
创建空物体,添加组件
代码
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;
}
}
void Start () {
InitMesh();
}
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;
}
}
效果