Unity3D szuka przykładu setPixels do malowania teksturą w C #
Muszę znaleźć sposób, który pozwoli mi pomalować obiekt gry za pomocą tekstury, a celem jest stworzenie klonuta gra
Już myślałem, że mogę sfałszować funkcję malowania, używając rozwiązania depthMask, które wyjaśniłemtutajjednak po wielu godzinach badań wydaje się, że setPixels, setPixel i setPixels32 mogą być użyte do stworzenia prawdziwego obrazu, ale z jakiegoś powodu wszystkie tematy związane z setPixels w Skrypcie odniesienia są w JavaScript, próbowałem przenieść go na c #, ale ja zawsze dostałem błędy, a także jest to dość skomplikowane podejście, a odwołanie do skryptu nie wyjaśnia tego zbyt dobrze, więc mam nadzieję, że każdy może napisać mi przykład używając setPixels, aby zmienić część tekstury obiektu za pomocą innej tekstury? a może możemy ustawić cały obiekt alfa na 0, a gdy go klikniemy, zmienimy część tej tekstury alfa na 1?
Naprawdę mam nadzieję, że ten temat nie zostanie zamknięty z powodu jego różnorodności, starałem się zadać proste pytanie, wyjaśniając całą sytuację.
Dziękuję Ci
EDYTOWAĆ:
Po kilku godzinach osiągnąłem całkiem fajny wynik i myślę, że może to być dobry sposób na osiągnięcie mojego celu, ten skrypt pozwala zastąpić konkretny piksel w materialnej teksturze inną wybraną teksturą (docelowa tekstura musi mieć ten sam rozmiar i czytelność)
// the texture that i will paint with
public Texture2D targetTexture ;
//temporary texture
Texture2D tmpTexture;
void Start ()
{
//setting temp texture width and height
tmpTexture = new Texture2D (targetTexture.width, targetTexture.height);
for (int y =0; y<tmpTexture.height; y++) {
for (int x = 0; x<tmpTexture.width; x++) {
//filling the temporary texture with the target texture
tmpTexture.SetPixel (x, y, targetTexture.GetPixel (x, y));
}
}
//Apply
tmpTexture.Apply ();
//change the object main texture
renderer.material.mainTexture = tmpTexture;
}
Teraz myślę, że problemem będzie tylko „jak wiedzieć, który piksel powinienem zastąpić na podstawie pozycji myszy nad obiektem”