我刚刚开始学习C#和Unity,但我正在尝试获得预制件的图像,以便我可以在游戏的其他地方使用它。
我遇到了代码here,但实际上我不明白如何使用它。
我有预制件,我在其中添加了一个画布,然后将代码应用到预制件中,但之后我又如何让它运行?
我对原帖有评论,但我还没有发表评论。
答案 0 :(得分:2)
它看起来你提供的链接上的代码,正在设置void Start()中的所有内容。因此,当你在Unity中按下播放时,它会在start方法中运行代码,有效地拍摄照片。您需要确保添加CanvasScreenShot.cs
的对象的名称是" GameObject"。在test.cs
的第10行,他试图找到一个名为" GameObject"的GameObject。或者在第10行中,您可以将其更改为GameObject的名称。
void receivePNGScreenShot(byte[] pngArray)
{
Debug.Log("Picture taken");
//Do Something With the Image (Save)
string path = Application.persistentDataPath + "/CanvasScreenShot.png";
System.IO.File.WriteAllBytes(path, pngArray);
Debug.Log(path);
}
test.cs
的您可能会发现更容易更改path
值,更喜欢您的桌面或其他内容或在您的Unity文件夹中。你在控制台中收到任何错误吗?随意评论我会尽力帮助你。
答案 1 :(得分:0)
一种方法可能是使用相机来实现这一目标。您可以移动相机,并更改相机上的剔除遮罩以确定它渲染的内容,这样您就可以对其进行调整,使其仅渲染场景中您想要的对象。
要显示该图像,您可以使用渲染纹理来获得连续更新的纹理。如果您需要获得单个图像,则必须编写一些代码,而我不确定最佳方法是什么。
至于获取PNG或任何图像,我不知道如何做到这一点,但你链接的代码看起来就如何使用它有一个很好的解释。 我仍然不太确定为什么你想要一个PNG,除非你希望用户在运行后有一个保存的图像。