knuppel Geschrieben 20. Februar 2018 Melden Share Geschrieben 20. Februar 2018 Hallo, ich würde gerne aus einem z.B. 8x8 Array ein Sprite erstellen. Das Array würde zum Beispiel nur nullen oder einsen enthalten, was bedeutet, dass an bei 1 an der jeweiligen Position ein Pixel gesetzt wird. Bei 0 würde kein Pixel gesetzt, bzw. es sollte hier transparent sein. Wie wäre meine Vorangehensweise? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 20. Februar 2018 Melden Share Geschrieben 20. Februar 2018 Was möchtest du denn genau machen? 8 x 8 Array im Zusammenhang mit Sprite? Versuchst du ein ein Sprite-Array zu erstellen? Erklär mal genauer was du vor hast. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mr 3d Geschrieben 20. Februar 2018 Melden Share Geschrieben 20. Februar 2018 Ich glaube er will ein Sprite mit 8x8 Pixeln erstellen, wobei die Farben der Pixel abhängig von den entsprechenden Werten im Array sind. Du kannst einfach eine Texture2D ( https://docs.unity3d.com/ScriptReference/Texture2D.html ) erstellen und dann die Farben für jeden Pixel setzen ( https://docs.unity3d.com/ScriptReference/Texture2D.SetPixels.html ). Danach nicht vergessen "Apply();" ( https://docs.unity3d.com/ScriptReference/Texture2D.Apply.html ) aufzurufen, um die Änderungen 'anzuwenden'. Die Texture2D kannst du in eine RawImage Komponente laden, oder du generierst aus der Textur ein Sprite ( https://docs.unity3d.com/ScriptReference/Sprite.Create.html ) und übergibst es an deinen SpriteRenderer. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
knuppel Geschrieben 20. Februar 2018 Autor Melden Share Geschrieben 20. Februar 2018 Sowas, siehe Bild. P.s.:nur ein Beispiel Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 20. Februar 2018 Melden Share Geschrieben 20. Februar 2018 using System.Collections; using System.Collections.Generic; using UnityEngine; public class PicArray : MonoBehaviour { public Texture2D texture; public Sprite mySprite; private int[,] arr = new int[8, 8]; void Start() { texture = new Texture2D(8, 8); // Array zufällig füllen for (int y = 0; y < texture.height; y++) { for (int x = 0; x < texture.width; x++) { arr[x, y] = Random.Range(0, 2); } } // Textur erzeugen for (int y = 0; y < texture.height; y++) { for (int x = 0; x < texture.width; x++) { Color color = (arr[x, y] == 0 ? Color.clear : Color.black); texture.SetPixel(x, y, color); } } texture.Apply(); // Thanks to "Mr 3d" ;) mySprite = Sprite.Create(texture, new Rect(0.0f, 0.0f, texture.width, texture.height), new Vector2(0.5f, 0.5f), 100.0f); } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
knuppel Geschrieben 20. Februar 2018 Autor Melden Share Geschrieben 20. Februar 2018 vor einer Stunde schrieb Mr 3d: Danke für deinen Quellcode. Wie krieg ich das Sprite jetzt in die GUI? Ich hab ein Canvas mit einem Sprite erstellt und dann das Script angefügt, das hat aber nicht geklappt. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 20. Februar 2018 Melden Share Geschrieben 20. Februar 2018 Habs fix eingebaut, das Image auf den entsprechenden Slot ziehen (ich gehe mal davon aus du meintest ein UI-Image): using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class PicArray : MonoBehaviour { public Image image; private Texture2D texture; private Sprite mySprite; private int[,] arr = new int[8, 8]; void Start() { texture = new Texture2D(8, 8); // Zufallstextur setzen for (int y = 0; y < texture.height; y++) { for (int x = 0; x < texture.width; x++) { arr[x, y] = Random.Range(0, 2); } } // Textur erzeugen for (int y = 0; y < texture.height; y++) { for (int x = 0; x < texture.width; x++) { Color color = (arr[x, y] == 0 ? Color.clear : Color.black); texture.SetPixel(x, y, color); } } texture.Apply(); mySprite = Sprite.Create(texture, new Rect(0.0f, 0.0f, texture.width, texture.height), new Vector2(0.5f, 0.5f), 100.0f); image.sprite = mySprite; } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.