在Unity中更改对象的精灵


11

我想在hero(object)的脚本代码中添加更改其sprite的可能性。

因此,播放器按下了空格键,该精灵变成了已经添加到项目中的另一个精灵。

您可以提供一个示例代码来做到这一点吗?


1
尽管下面的更改Sprite的功能应完全按照您的要求工作,但我还是建议您研究一下Unity动画师。通常,当人们更换精灵时,通常是为动作创建动画(例如挥舞剑或打开门),这通常是在更基本的引擎中通过手动交换精灵来完成的。但是,Unity内置了对动画的支持,允许您为所需的所有精灵创建一个动画文件,然后让您告诉游戏在给定动画控制器中特定条件的情况下自动播放它们。
本杰明·丹格·约翰逊

Answers:


20

该代码已为您注释。请享用。

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
    }
}

您需要在游戏对象上附加一个精灵渲染器。创建一个新的C#脚本,并将一个GameObject附加到它。将代码粘贴在括号之间...我确定您可以从那里弄清楚它:)


先生,你是一个传奇。
kal kokah
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.