【发布时间】:2020-01-28 10:08:44
【问题描述】:
我正在尝试截取一个对象的屏幕截图,然后在统一的订单(另一个场景)中将其显示为预览。
我已使用原生图库资产将屏幕截图保存到图库。但我不确定如何在下一个场景中显示图像。
有没有办法做到这一点?或者也许将图像发送到下一个场景?
更新:
我尝试将 DontDestroyOnLoad 脚本添加到与截图相关的游戏对象中,但截图未在第二个场景中显示。这是我的代码
void Start()
{
DontDestroyOnLoad(transform.gameObject);
}
我从场景更改脚本中调用了以下函数
void Start()
{
GameObject thePlayer = GameObject.Find("screenshotGameObject");
TakeScreenshot playerScript = thePlayer.GetComponent<TakeScreenshot>();
Screenshot = playerScript.ss;
}
我用来截图的脚本
public class TakeScreenshot : MonoBehaviour {
[SerializeField]
public Text debugText;
public GameObject ScreenshotImage;
//protected const string MEDIA_STORE_IMAGE_MEDIA = "android.provider.MediaStore$Images$Media";
//protected static AndroidJavaObject m_Activity;
public void TakeAShot()
{
StartCoroutine(TakeScreenshotAndSave());
}
IEnumerator TakeScreenshotAndSave()
{
yield return new WaitForEndOfFrame();
Texture2D ss = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
ss.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
ss.Apply();
NativeGallery.Permission permission = NativeGallery.CheckPermission();
NativeGallery.RequestPermission();
if (permission == NativeGallery.Permission.Denied)
{
NativeGallery.OpenSettings();
}
else if(permission == NativeGallery.Permission.Granted)
{
// Save the screenshot to Gallery/Photos
Debug.Log("Permission result: " + NativeGallery.SaveImageToGallery(ss, "Boflora", "Image.png"));
//debugText.text = "Permission result: " + NativeGallery.SaveImageToGallery(ss, "GalleryTest", "Image.png");
// To avoid memory leaks
//Destroy(ss);
}
StartCoroutine(ShowAndHide(1.0f)); // 1 second
}
IEnumerator ShowAndHide(float delay)
{
ScreenshotImage.SetActive(true);
yield return new WaitForSeconds(delay);
ScreenshotImage.SetActive(false);
}
}
【问题讨论】:
-
有很多方法可以为下一个场景发送/保留一个对象,你尝试了什么,你做了什么,你看了什么并忽略了......
-
我不知道有什么方法可以传输图片或从图库中访问它。我不是在谈论对象,而是在场景中动态拍摄的屏幕截图。请帮忙
-
好吧,一切都是对象,在 c# 中,因此在统一中,因此可以应用在场景之间传输任何内容的方式
-
第一个问题你是怎么说截图的?据我所知,到目前为止我所看到的应该是渲染纹理,如果是这种情况,您可以将相同的渲染测试分配给 scean#2 的任何脚本,并且您可以使用它。
-
@BugFinder,我尝试了这种方法并更新了问题,但仍然无法正常工作