Unity 读取某一张图片,用Cube代替这张图片的像素点打印出来,类似MC地图的效果

直接上代码(PS:很简单的实现方式,适合200*200像素以下的小图,图片像素太多会造成电脑主机卡死,切记)

using UnityEngine;

/*
 * Texture2D.GetPixels()  获取图片所有像素点的颜色
 * Texture2D.height 获取图片的高度
 * Texture2D.width  获取图片的宽度
 */

public class PrintPictures : MonoBehaviour
{
    // 图片
    public Texture2D texture;
    // 代替像素点的模型
    public Object obj;
    // 代替像素点的模型生成的位置
    public Transform arr;

    void Start()
    {
        int index = 0;
        Color[] colors = texture.GetPixels();

        for (int i = 0; i < texture.height; i++)
        {
            for (int j = 0; j < texture.width; j++)
            {
                GameObject cube = Instantiate(obj, new Vector3(j, i, 0), Quaternion.identity, arr) as GameObject;
                cube.GetComponent().material.color = colors[index];
                index++;
            }
        }
    }
}

Unity 读取某一张图片,用Cube代替这张图片的像素点打印出来,类似MC地图的效果_第1张图片

在这里注意要被读取的图片要转换成2d,并且勾选这个Read/Write Enable 选项

Unity 读取某一张图片,用Cube代替这张图片的像素点打印出来,类似MC地图的效果_第2张图片

最后的效果就完成了,我们可以看到每一个像素点都是由Cube拼起来的

Unity 读取某一张图片,用Cube代替这张图片的像素点打印出来,类似MC地图的效果_第3张图片

你可能感兴趣的:(Unity)