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.
- 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.
Utilizați un editor personalizat cu previzualizare sprite
(EDIT: acum suportă imagini cu mai multe sprite)
- Creați un script gol (sau folosiți unul pe care îl aveți deja), să îl numim așa
TestScript
. - Plasați acest script pe un obiect de joc gol.
- Adăugați un Sprite Renderer la acel obiect.
- Adăugați un alt script, să îl numim
SpritePreview
. Acesta ar trebui să moștenească dinEditor
. Puteți plasa codul pentru această clasă în același fișier ca și scriptulTestScript
.
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);
}
}
}
- Acum selectați un sprite în sprite renderer.
- 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:
- Mulțumesc, pare a fi o soluție excelentă și o bună introducere privind extinderea editorului! Voi încerca acest lucru. > .
- Vă rog să marcați răspunsul ca fiind acceptat dacă vă merge :-)- > .
- 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.- > .
- 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. > .
- Încearcă cu noul cod ;-)-. > .
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.
- Nu am Advanced ca opțiune pentru tipul de textură, dar am „Alpha is transparency”, am debifat-o, dar nu funcționează. > .
- 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ă. > .