unity3d - 检查对象是否全部绘制
问题描述
我有一个棕色精灵,其中包含一个三角形的孔。
我添加了一个轨迹渲染器(并将其在层中的顺序设置为出现在精灵后面),因此用户可以在不绘制精灵本身的情况下绘制精灵的孔。
我的问题是:它如何检测孔何时全部涂漆?
我想过使用着色器来检查屏幕中是否有黑色像素,但我不知道是否可能,因为着色器不会知道它在图像中的百分比。
解决方案
一种方法是使用该ScreenCapture.CaptureScreenshotAsTexture
方法截取屏幕截图,然后从Texture2D.GetPixels32
. 然后,您可以检查数组是否包含“黑色”像素。
我会在协程中执行此操作以获得更好的性能,因为每帧执行此操作可能会减慢您的应用程序。根据统一文档,在 CaptureScreenshotAsTexture 方面也很重要:
要从此方法获得可靠的输出,您必须确保在帧渲染结束时调用它,而不是在渲染过程中。确保这一点的一种简单方法是从产生于 WaitForEndOfFrame 的协程中调用它。如果您在渲染过程中调用此方法,您将得到不可预测和未定义的结果。
推荐阅读
- java - 如何在 mockito 中模拟 servlet 上下文
- android - 奥利奥本地化有时不起作用
- jsp - 如何从 AEM 的 Java 文件中获取给定再现的资产路径?
- uitableview - UITableView 没有出现在 iPhone 中
- c# - c# Naaudio音频电平捕获和显示,仅在打开录音属性时有效
- javascript - 多语言验证处理逻辑
- javascript - 如何动态更改 logoURL?
- python - 在python中对不同的列进行分组
- jquery - 如何通过下拉列表的变化根据数据属性对div进行排序
- qt - Qt QTreeView indexBelow 不起作用