首页 > 解决方案 > 检查对象是否全部绘制

问题描述

我有一个棕色精灵,其中包含一个三角形的孔。

我添加了一个轨迹渲染器(并将其在层中的顺序设置为出现在精灵后面),因此用户可以在不绘制精灵本身的情况下绘制精灵的孔。

我的问题是:它如何检测孔何时全部涂漆?

我想过使用着色器来检查屏幕中是否有黑色像素,但我不知道是否可能,因为着色器不会知道它在图像中的百分比。

在此处输入图像描述

标签: unity3dshadersprite

解决方案


一种方法是使用该ScreenCapture.CaptureScreenshotAsTexture方法截取屏幕截图,然后从Texture2D.GetPixels32. 然后,您可以检查数组是否包含“黑色”像素。

我会在协程中执行此操作以获得更好的性能,因为每帧执行此操作可能会减慢您的应用程序。根据统一文档,在 CaptureScreenshotAsTexture 方面也很重要:

要从此方法获得可靠的输出,您必须确保在帧渲染结束时调用它,而不是在渲染过程中。确保这一点的一种简单方法是从产生于 WaitForEndOfFrame 的协程中调用它。如果您在渲染过程中调用此方法,您将得到不可预测和未定义的结果。


推荐阅读