【问题标题】:Capture desktop and use as texture?捕获桌面并用作纹理?
【发布时间】:2016-05-07 18:27:20
【问题描述】:

我已经阅读了很多关于在 Unity3D 中截屏的示例,但它们都解释了“游戏内”截屏。我想在我的桌面上截取一个应用程序窗口的屏幕截图并将其作为纹理绘制到游戏对象上。

知道我该怎么做吗?我只使用过几次 Unity3D,因此希望能得到一些关于这是否可行以及如何实现这一点的指导。

我知道我可以编写一些常规的 C# 应用程序,将 capture the outputs of windows 归档并读取 Unity3D 中的图像。但是,我不希望写入磁盘。

目前,我所能做的就是获取“游戏内”屏幕截图...

void LateUpdate()
{
    //I know that I could load an image from file here...
    Texture2D tex = new Texture2D(Screen.width, Screen.height);
    tex.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
    tex.Apply();
    display.material.mainTexture = tex;
}

【问题讨论】:

  • 制作屏幕截图,将其保存到您的资产文件夹,为其创建材质,分配给您想要分配的任何内容?还是我完全误解了?
  • @yes 抱歉,我已经考虑过这一点并将其添加到帖子中。请查看更新。
  • 我仍然不明白你试图归档的内容 ^^ 如果它只是一个屏幕截图,只需制作一个屏幕截图(如使用键盘上的 printscreen 键)。还是您想要一些桌面应用的直播?
  • 我想捕获桌面上所有打开的窗口(MS Word、Excel 等)并将这些捕获显示在游戏对象上。我不想写入磁盘。桌面应用程序的实时流就差不多了。
  • @yes 他想要整个设备的屏幕截图,而不是统一运行的游戏的屏幕截图。例如,当 Unity 应用程序没有全屏运行时,他希望能够拍摄屏幕上显示的内容。 unity app 和屏幕上的其他东西。

标签: c# unity3d


【解决方案1】:

我认为你应该使用 DLL。
看看这里at this SO answer

他解释了如何在 Visual C# 中捕获窗口句柄。我认为您可以找到一个桌面句柄(在 Win7+ 上)并捕获它,然后使用您的 DLL 将其发送到统一。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多