【发布时间】:2021-05-08 01:13:36
【问题描述】:
我正在构建从关卡场景到菜单场景的平滑过渡。 这个想法是在下一个场景(菜单)加载之前制作关卡的屏幕截图。 然后截取这个覆盖整个屏幕并淡出以显示菜单的屏幕截图。
在关卡结束时,我会截屏。
ScreenCapture.CaptureScreenshot("Resources/DestroyedBoss.png");
当我加载下一个场景时,这个屏幕截图应该加载并覆盖整个场景。
public Texture2D myTexture;
void Start()
{
// load texture from resource folder
myTexture = Resources.Load("DestroyedBoss") as Texture2D;
GameObject rawImage = GameObject.Find("RawImage");
rawImage.GetComponent<RawImage>().texture = myTexture;
}
屏幕截图会褪色,包含它的对象将被销毁。
public RawImage imageToFade;
void Update()
{
imageToFade.color -= new Color(0, 0, 0, 0.2f * Time.deltaTime);
if (imageToFade.color.a < 0.1)
Destroy(this.gameObject);
}
这一切都很好,除了加载屏幕截图本身。
似乎unity在运行游戏时不会更新图像。并且总是使用我上次运行游戏时的屏幕截图。
我已经搜索/谷歌搜索并尝试了 2 天,但我不知所措。
我怎样才能做到这一点?有没有办法在运行我的游戏时更新 png 文件?也许为屏幕截图创建一个临时容器并将其设置为 RawImage?
【问题讨论】:
-
您不能在运行时将内容添加到
Resources.. 内容是一种预兑现的.. 更糟糕的是:在构建之后,Resources无论如何都是只读的,所以即使 如果您的代码可以在编辑器中运行,那么它无论如何都不会在实际构建的应用程序中运行 -
我认为您应该使用
Application.persistentDataPath并通过例如实际加载图像UnityWebRequestTexture.GetTexture -
@derHugo 你先生真棒。 Application.persistentDataPath 运行良好。我用它来保存和加载屏幕截图,效果很好。我会尝试用 UnityWebRequestTexture.GetTexture 加载,以进行练习。
标签: c# unity3d png screenshot