Проверьте, все ли объекты окрашены - PullRequest
1 голос
/ 17 февраля 2020

У меня есть коричневый спрайт, который содержит отверстие с формой tri angular.

Я добавил средство рендеринга следа (и установил его порядок в слое, чтобы он отображался позади спрайта), поэтому пользователь Можно нарисовать дыру в спрайте, не рисуя сам спрайт.

Мой вопрос: Как он может определить, когда дыра полностью закрашена?

Я думал об использовании шейдера чтобы проверить, есть ли какой-нибудь черный пиксель на экране, но я не знаю, возможно ли это, потому что шейдер не будет знать, в каком процентном соотношении это изображение.

enter image description here

1 Ответ

1 голос
/ 17 февраля 2020

Один из способов - сделать снимок экрана с помощью метода ScreenCapture.CaptureScreenshotAsTexture, а затем l oop через массив цветов пикселей от Texture2D.GetPixels32. Затем вы можете проверить, содержит ли массив «черные» пиксели.

Я бы сделал это в сопрограмме для повышения производительности, так как выполнение каждого кадра может замедлить работу вашего приложения. Кроме того, что важно, когда дело доходит до CaptureScreenshotAsTexture в соответствии с документами Unity:

Чтобы получить надежный вывод этого метода, вы должны убедиться, что он вызывается после окончания рендеринга кадра, а не во время рендеринга. обработать. Простой способ убедиться в этом - вызвать его из сопрограммы, которая приводит к WaitForEndOfFrame. Если вы вызовете этот метод во время процесса рендеринга, вы получите непредсказуемые и неопределенные результаты.

...