Pot să schimb culoarea de fundal în care este afișat un sprite în inspector? (Dezvoltarea jocurilor, Unitate, Sprites)

Petruza a intrebat.
a intrebat.

așa se arată un sprite în inspector. este pixelart alb cu fundal transparent. există o modalitate de a schimba culoarea modelului de fundal în carouri în inspector astfel încât să pot vedea sprite-ul?

Notă: Nu vreau să schimb nici o culoare din joc, doar fundalul în inspector, în editor, ca să existe un oarecare contrast și să pot vedea efectiv modelul sprite-ului.

Comentarii

  • Nu știu dacă asta este o caracteristică. Dacă aveți pro totuși puteți folosi tema neagră care are un model în carouri mai întunecat pentru fundalul inspectorului de sprite.ro  > Por n_plum.
  • @n_palum Da, din moment ce nu găsesc nimic asemănător, cred că nici măcar nu ar putea fi o caracteristică.-  > Por Petruza.
  • Din câte mi-am dat seama, versiunea pro ar fi singura ta opțiune, dar nu pare că ai nevoie de versiunea pro…  > Por n_plum.
2 răspunsuri
lilotop

Utilizați un editor personalizat cu previzualizare sprite

(EDIT: acum suportă imagini cu mai multe sprite)

  1. Creați un script gol (sau folosiți unul pe care îl aveți deja), să îl numim așa TestScript.
  2. Plasați acest script pe un obiect de joc gol.
  3. Adăugați un Sprite Renderer la acel obiect.
  4. Adăugați un alt script, să îl numim SpritePreview. Acesta ar trebui să moștenească din Editor. Puteți plasa codul pentru această clasă în același fișier ca și scriptul TestScript.

SpritePreview

[CustomEditor(typeof(TestScript))]
public class SpritePreview : Editor {
    public override void OnInspectorGUI() {
    var sr = ((TestScript)target).GetComponent<SpriteRenderer>();

    // it's not enough to check for the renderer as it might be empty
    if (sr && sr.sprite) {

        // we need the rect in pixels to reserve space in the layout system
        // we also use it for calculating the rect in percentage
        var rect = sr.sprite.rect;

        // reserve a rect in the layout of the editor, we will draw the sprite there
        var destRect = GUILayoutUtility.GetRect(rect.width, rect.height);

        // the texture, this object contains all of the sprites in case of a multiple sprites image
        var texture = sr.sprite.texture;

        // calculate the rect of the selected sprite as a percentage of the sprite sheet
        // this is how TexCoords work
        var rectAsPercentage = new Rect(rect.x / texture.width, rect.y / texture.height,
                               rect.width / texture.width, rect.height / texture.height);

        // draw the selected sprite
        GUI.DrawTextureWithTexCoords(destRect, texture, rectAsPercentage);
    }
    }
}
  1. Acum selectați un sprite în sprite renderer.
  2. Veți vedea o previzualizare în editor, cu fundal gri, așa cum urmează:

EDIT: am actualizat scriptul pentru a funcționa și cu mai multe resurse de sprite:

Comentarii

  • Mulțumesc, pare a fi o soluție excelentă și o bună introducere privind extinderea editorului! Voi încerca acest lucru.  > Por Petruza.
  • Vă rog să marcați răspunsul ca fiind acceptat dacă vă merge :-)-  > Por lilotop.
  • Contează pe asta, imediat ce îmi fac timp să lucrez cu unity. În ciuda a ceea ce mi-aș dori, PHP încă îmi plătește facturile în loc de Unity.-  > Por Petruza.
  • Am încercat, funcționează, dar afișează spritesheet-ul complet, eu deja îl am în project view. Aș avea nevoie să văd sprites-urile individuale pentru a le putea selecta. Vedeți captura de ecran atașată în întrebarea mea.  > Por Petruza.
  • Încearcă cu noul cod ;-)-.  > Por lilotop.
Lună candidă _Max_

Poți să schimbi tipul de textură în advanced și să debifezi căsuța Alpha Is Transparency. Se comportă în continuare ca Sprite în joc din câte am încercat, deși fii atent la alte valori și citește despre ele înainte de a le schimba. Sprite are în continuare transparență în scenă și în vizualizările din joc.

Comentarii

  • Nu am Advanced ca opțiune pentru tipul de textură, dar am „Alpha is transparency”, am debifat-o, dar nu funcționează.  > Por Petruza.
  • Cum adică trebuie să o ai. Este în Unity, verifică documentația. Trebuie doar să alegi textura sau sprite în folderul de proiect și este în partea de sus, Texture Type – Advanced este ultimul din listă.  > Por Candid Moon _Max_.