Ändern Sie das Sprite eines Objekts in Unity

11

Innerhalb des Skriptcodes des Helden (Objekts) möchte ich die Möglichkeit hinzufügen, sein Sprite zu ändern.

Der Spieler drückt also die Leertaste und das Sprite wechselt in das andere Sprite, das bereits zum Projekt hinzugefügt wurde.

Können Sie mir dazu einen Beispielcode geben?

Fab
quelle
1
Obwohl die Funktion zum Ändern von Sprites unten genau so funktionieren sollte, wie Sie es gewünscht haben, würde ich vorschlagen, dass Sie sich den Unity-Animator ansehen. Wenn Leute Sprites wechseln, wird normalerweise eine Animation für eine Aktion erstellt (z. B. ein Schwert schwingen oder eine Tür öffnen). Dies geschieht normalerweise in grundlegenderen Engines, indem die Sprites manuell ausgetauscht werden. Unity verfügt jedoch über eine integrierte Unterstützung für Animationen, mit der Sie eine Animationsdatei für alle benötigten Sprites erstellen und das Spiel anweisen können, diese unter bestimmten Bedingungen im Animations-Controller automatisch zu spielen.
Benjamin Danger Johnson

Antworten:

19

Der Code wurde für Sie kommentiert. Genießen.

public Sprite sprite1; // Drag your first sprite here
public Sprite sprite2; // Drag your second sprite here

private SpriteRenderer spriteRenderer; 

void Start ()
{
    spriteRenderer = GetComponent<SpriteRenderer>(); // we are accessing the SpriteRenderer that is attached to the Gameobject
    if (spriteRenderer.sprite == null) // if the sprite on spriteRenderer is null then
        spriteRenderer.sprite = sprite1; // set the sprite to sprite1
}

void Update ()
{
    if (Input.GetKeyDown (KeyCode.Space)) // If the space bar is pushed down
    {
        ChangeTheDamnSprite (); // call method to change sprite
    }
}

void ChangeTheDamnSprite ()
{
    if (spriteRenderer.sprite == sprite1) // if the spriteRenderer sprite = sprite1 then change to sprite2
    {
        spriteRenderer.sprite = sprite2;
    }
    else
    {
        spriteRenderer.sprite = sprite1; // otherwise change it back to sprite1
    }
}

Sie müssen einen Sprite-Renderer an Ihr GameObject angehängt haben. Erstellen Sie ein neues C # -Skript und hängen Sie ein GameObject an. Fügen Sie den Code zwischen die Klammern ein ... Ich bin sicher, Sie können ihn von dort aus herausfinden :)

Savlon
quelle
Sie, Sir, sind eine Legende.
Kal Kokah