Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 检查物体是否全部上漆_Unity3d_Shader_Sprite - Fatal编程技术网

Unity3d 检查物体是否全部上漆

Unity3d 检查物体是否全部上漆,unity3d,shader,sprite,Unity3d,Shader,Sprite,我有一个棕色的雪碧,里面有一个三角形的洞 我添加了一个轨迹渲染器(并将其在层中的顺序设置为显示在精灵后面),因此用户可以绘制精灵的洞,而无需绘制精灵本身 我的问题是:它如何检测孔何时全部涂漆? 我曾考虑使用着色器来检查屏幕上是否有黑色像素,但我不知道这是否可行,因为着色器不知道它在图像中所占的百分比 一种方法是使用该方法拍摄一张屏幕截图,然后循环浏览一组像素颜色。然后可以检查数组是否包含“黑色”像素 为了获得更好的性能,我会在协同程序中这样做,因为每帧都这样做可能会降低应用程序的速度。根据uni

我有一个棕色的雪碧,里面有一个三角形的洞

我添加了一个轨迹渲染器(并将其在层中的顺序设置为显示在精灵后面),因此用户可以绘制精灵的洞,而无需绘制精灵本身

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

我曾考虑使用着色器来检查屏幕上是否有黑色像素,但我不知道这是否可行,因为着色器不知道它在图像中所占的百分比


一种方法是使用该方法拍摄一张屏幕截图,然后循环浏览一组像素颜色。然后可以检查数组是否包含“黑色”像素

为了获得更好的性能,我会在协同程序中这样做,因为每帧都这样做可能会降低应用程序的速度。根据unity docs,关于CaptureShotAstexture,还有什么是重要的:

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


你能不能检查一下内三角形的材质,检查一下它的alpha值,然后确定它是否有颜色?在这种特殊情况下,这似乎是不可能的…老实说,你可能不会用轨迹渲染器来做这件事,Daniel。只需搜索一些“在精灵上绘画”类型的软件包,对您来说就足够简单了!然后你只需检查一下新图片是否“全部填充”,谢谢你的提示@Fattie,我会看的。老实说,这不是一个很好的方法。首先,真的,你在这里不使用轨迹渲染器!!!老实说,我不知道我是否在使用这个,因为我有一个关于如何使用着色器解决这个问题的想法,但对我来说这似乎是一个坚实的解决方案,即使它可能很慢。我不需要每一帧都检查它,所以如果其他选项出错,这是一个很好的计划。我同意这不是一个完美的解决方案,但却是我想到的第一件事。我想Daniel有理由使用trail渲染器。不管怎样,我希望能有所帮助。