一共有 24 篇文章,分页:1 / 5

Unity3D截屏/获取物体快照

void OnClick ()
{
    StartCoroutine(CaptureScreen());
}

IEnumerator CaptureScreen()
{
    yield return new WaitForEndOfFrame();

    Texture2D t = new Texture2D(Screen.width, Screen.height);
    //截取的区域,使用像素空间坐标 (0,0)是屏幕左下角
    t.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0, false);
    t.Apply();
    //把纹理数据转换为PNG格式
    byte[] bytes = t.EncodeToPNG();
    //保存
    System.IO.File.WriteAllBytes(Application.dataPath + "/" + Time.time + ".png", bytes);
}

主要用到了Texture2D.ReadPixels这个API,看一下来自ceeger的API说明

阅读全文 »»

C#简单实现泛型数组QSort

Talk is cheap,show me the code

public class UIPanel
{
    public int depth;
}

public class Test
{
    /***************快速排序功能****************/
    public delegate int QSortCompareFunction<T>(T a,T b);
    public static void QSort<T>(T[] array,QSortCompareFunction<T> compareFunc)
    {
        //排序算法: 插入排序
        for(int i = 1; i < array.Length; i++)
        {  
            T t = array[i];  
            int j = i;
            while( (j>0) && compareFunc(array[j-1] , t) > 0 )
            {
                array[j] = array[j-1];
                --j;
            }
            array[j] = t;
        }
    }
    /************快速排序功能结束***************/

    static int UIPanelSortBy(UIPanel a,UIPanel b)
    {
        if(a.depth > b.depth)return 1;
        if(a.depth < b.depth)return -1;
        return 0;
    }

    static void PrintArray(UIPanel[] panels)
    {
        System.Console.Write("[");
        for(int i = 0; i < panels.Length; i++)
        {
            if(i != 0)System.Console.Write(",");
            System.Console.Write(panels[i].depth);
        }
        System.Console.Write("]\n");
    }

    static void Main(string[]args)
    {
        UIPanel[] panels = {
            new UIPanel(){depth = 6},new UIPanel(){depth = 2},new UIPanel(){depth = 1}
            ,new UIPanel(){depth = 4},new UIPanel(){depth = 5},new UIPanel(){depth = 3}
            ,new UIPanel(){depth = 2},new UIPanel(){depth = 5},new UIPanel(){depth = 7}
        };

        PrintArray(panels);

        QSort<UIPanel>(panels,UIPanelSortBy);

        PrintArray(panels);
    }
}

PNG2JPG——一种在保留透明度的前提下压缩PNG为JPG的工具

工具名称:png压缩工具 使用说明:命令行方式使用,如:png2jpg.exe a.png b.png c.png (或可直接拖动多个png到图标上) ---by yoyo(http://yoyo.play175.com)

png格式因为是无损压缩,所以文件相比于jpg格式会大很多,而jpg把对人眼不太敏感的像素去除,可以把图片压缩的很小,而jpg的缺陷就是没有alpha通道,不能作为半透明图片的存储格式。 我采用了网上广为流传的一种处理方式,那就是把RGB通道使用JPG压缩,然后再把alpha通道使用JPG压缩,放到一张2倍大小的图片里。 在使用时,代码中把RGB和alpha通道合起来,就得到了我们需要的半透明图片了。

未处理前PNG大小:8.36KB

1.png

处理后JPG大小:4.22KB

1\_png.jpg

可以看到图片存储所需空间缩小了一倍,图片越大,压缩效果越明显。

下载地址:png2jpg.zip

JPG2PNG——jpg转png命令行工具

工具名称:JPG转PNG工具(jpg2png.exe)

使用说明:命令行方式使用,如:jpg2png.exe a.png b.png c.png

(或可直接拖动多个文件到图标上)

---by yoyo(http://yoyo.play175.com)

这款工具可以去除jpg图片中的黑色背景,并以增加模式改善图片原有的通道亮度,在提取游戏中的特效资源中,这款工具非常有用。

转换前jpg图片:

转换后png图片:

下载地址:jpg2png.zip

ICO2PNG——ico图标转png图片小工具

工具描述:ico转PNG工具(ico2png.exe)

使用说明:只支持命令行方式使用,如:ico2png.exe a.ico b.ico c.ico

(或可直接拖动多个文件到图标上)

---by yoyo(http://yoyo.play175.com)

可以把ico文件中的所有格式的图标转为png图片存储到ico文件所在的目录下,如下图所示:

下载地址:ico2png.zip