将游戏对象转换为图像?

Convert GameObject to image?

所以我正在制作纸牌游戏,希望我的用户能够创建自定义纸牌,不仅可以在游戏中使用它们,还可以打印它们。

目前,我一直在将卡片的 UI GameObject 转换为单个图像。

卡片游戏对象有一个模板卡片背景、几个其他图像(资源、主图像等)和多个文本框(标题、类型和描述)。然后我想采用该卡片层次结构并将其转换为单个图像。

我认为这将是一个相当简单的任务,但它似乎是一个 non-trivial...或者我在这里是一个甜瓜?

好问题!

按下后调用下方 Capture 的按钮和要捕获的一些 GameObject 图片:

代码:

using System.IO;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    public GameObject GameObject;

    public void Capture()
    {
        var rectTransform = GameObject.GetComponent<RectTransform>();
        var delta         = rectTransform.sizeDelta;
        var position      = rectTransform.position;

        var offset = new RectOffset((int) (delta.x / 2), (int) (delta.x / 2), (int) (delta.y / 2), (int) (delta.y / 2));
        var rect   = new Rect(position, Vector2.zero);
        var add    = offset.Add(rect);

        var tex = new Texture2D((int) add.width, (int) add.height);
        tex.ReadPixels(add, 0, 0);

        var encodeToPNG = tex.EncodeToPNG();

        File.WriteAllBytes("card.png", encodeToPNG);

        DestroyImmediate(tex);
    }
}

简而言之,获取屏幕上的对象矩形,复制像素,瞧!

结果: