在捕获帧期间停用或禁用其他游戏对象

时间:2018-03-12 05:12:12

标签: unity3d rendering

在游戏过程中渲染和捕捉帧时,如何取消选择或停用某些我不希望在捕获帧中的游戏对象?

任何人都可以告诉我它是如何实现的?

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您应该使用SetActive代码

答案 1 :(得分:0)

最好将拍摄延迟到帧的结尾。

public void CaptureFrame()
{
    SetAllItems(false);
    StartCoroutine(CaptureCoroutine());
}

private IEnumerator CaptureCoroutine()
{
     yield return new WaitForEndOfFrame();
     Application.CaptureScreenshot("Screenshot.png");
     yield return null;
     SetAllItems(true);
}
private void SetAllItems(bool value)
{
    someGameObject.SetActive(value);
    otherGameObject.SetActive(value);
    // more code
}

这是因为如果您正在处理UI项目,则只有在渲染相机时才会从帧中删除它们。所有更新完成后都会发生这种情况。所以你需要等待那些,这样相机可以在没有所需物品的情况下再次渲染,然后捕捉帧。然后把它们放回去。

我在重新开始之前添加了一个收益率。我不确定它是否真的需要......只是为了确保......你可以尝试没有它,如果不需要就移除。