• 大小: 6KB
    文件类型: .cs
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: C#
  • 标签: Unity3d  Meth  温度云图  

资源简介

Unity3d使用Meth实现温度云图,看了网上有几个使用Shader实现的温度云图,基本都是写死的,并且代码都有毛病出不来效果,所以就用Meth实现了一个,温度点位能动态。行列动态创建,只需要自己给一个数值。创建一个空物体然后附上代码,再把空物体添加MethRenderer和MethFilter即可出现效果,本人亲自调试过,如果有问题可以问我一块探讨。

资源截图

代码片段和文件信息

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

public class MethTest : MonoBehaviour
{

    public Vector3[] vertices = null;   //顶点取样个数
    public Color[] colors = null;//每个定点对应的颜色 会自动进行插值
    private int[] m_yellow = { 10 11 12 13 17 18 19 20 21 22 25 26 27 28 29 30 34 35 36 37 };
    private int[] m_blue = { 0 1 2 3 4 5 6 7 8 16 24 32 40 41 42 43 44 45 46 47 };
    private int[] m_Red = { 18 19 20 21 26 27 28 29 };
    public Transform jigui_s;
    private float Wendu = 50;//设置温度
    private float time = 2;

    //定义行和列
    public int hang;
    public int lie;
    //行和列的间距
    public float hjj;



    //定义三角形定点数的数组 
    public int[] triangles = null;



    void Start()
    {
        DelegeteToUpdate();
    }
    void Update()
    {
        time -= Time.deltaTime;
        if (time<=0)
        {
            time = 2;
            DelegeteToUpdate();
        }

    }

    void DelegeteToUpdate()
    {
        Listject> jigui_Name = new Listject>();
        List list_pos = new List();
        //获取所有机柜的坐标保存到list集合中
        foreach (Transform item in jigui_s)
        {
            Vector3 jigui_pos = item.transform.position;
            list_pos.Add(jigui_pos);
        }
       

        int tCount = 0;
        //三角形数量
        int triangleCount = hang * 2 * lie;
        //三角形顶点数量
        int triangleCountPoint = hang * 2 * lie * 3;

        vertices = new Vector3[(hang + 1) * (lie + 1)];
        triangles = new int[triangleCountPoint];//三角形的定点索引
        colors = new Color[(hang + 1) * (lie + 1)];

        MeshFilter filter = gameobject.GetComponent();
        MeshRenderer render = gameobject.GetComponent();
        Shader shader = Shader.Find(“Sprites/Default“);
        render.material = new Material(shader);
        filter.mesh = new Mesh();
        Mesh mesh = filter.mesh;

        //全部画在第一象限

        for (int i = hang; i >= 0; i--)
        {
            for (int j = 0; j <= lie; j++)
            {

                vertices[tCount] = new Vector3(j * hjj 0 i * hjj);
                tCount++;

            }
        }

        int point = 0;

        for (int i = 0; i < hang; i++)
        {
            for (int j = 0; j < lie; j++)
            {
                triangles[point++] = i * (lie + 1) + j;
                triangles[point] = i * (lie + 1) + j + 1;
                int a = triangles[point++];
                triangles[point] = a + lie;
                int b = triangles[point++];
                triangles[point++] = a;
                triangles[p

评论

共有 条评论