首页 > 解决方案 > 在 Android 应用中截取 Unity 场景的屏幕截图

问题描述

在我的 Android 应用程序中,我有一个 Unity 场景作为视图的一部分。这是我从 Unity 编辑器导出项目后的设置方式。

protected void onCreate(Bundle savedInstanceState) {
    this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

    super.onCreate(savedInstanceState);
    mUnityPlayer = new UnityPlayer(this);
    binding = DataBindingUtil.setContentView(this, R.layout.main);

    mUnityPlayer.setBackgroundResource(R.drawable.some_drawable);
    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
    binding.scene.addView(mUnityPlayer.getView(), 0, lp);
}

这工作正常。现在我需要截取这个场景的截图并在另一个ImageView. 问题是 UnityPlayer 是一个FrameLayout,我希望使用getDrawingCache()它来获取屏幕截图。

但这只会返回我的背景图像R.drawable.some_drawable,Unity 场景中的任何文本和其他信息都不会出现在屏幕截图中。我认为这可能是因为其他内容不是 FrameLayout 的一部分,而是在某些TextureView或某些东西上呈现。我可能完全错了。但我不知道如何获取场景内内容的屏幕截图,Bitmap因为我可以将其设置在另一个imageView.

任何指示或帮助将不胜感激。谢谢!

标签: androidunity3d

解决方案


推荐阅读