将游戏对象转换为图像?
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);
}
}
简而言之,获取屏幕上的对象矩形,复制像素,瞧!
结果:
所以我正在制作纸牌游戏,希望我的用户能够创建自定义纸牌,不仅可以在游戏中使用它们,还可以打印它们。
目前,我一直在将卡片的 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);
}
}
简而言之,获取屏幕上的对象矩形,复制像素,瞧!
结果: