【问题标题】:Unity3d Sprite change with prefabsUnity3d Sprite 使用预制件进行更改
【发布时间】:2017-08-21 17:21:48
【问题描述】:

我有一个关于如何在运行时为一堆对象更改精灵图像的问题。

所以我制作了一款小型赛车 2d 游戏,因此您可以选择不同的主题。您可以在集成菜单(不是单独的场景)中使用此选项。

我的问题: 我可以在运行时轻松切换精灵吗?我为每个轨道元素制作了预制件 - 我更改了这些预制件的精灵,但只有在重新加载场景后才能看到更改。所以我需要避免这种情况。

有人有解决方案或提示我该怎么做吗?

提前致谢!

代码:

public class Background_Controller : MonoBehaviour {
public Camera mainCamera;
public Color colorNormal; 

public GameObject[] Prefabs;

public Sprite[] normalSprites;
public Sprite[] tronSprites;

// Use this for initialization
void Awake () {

    SwitchBackgroundFunction(); 

}


public void SwitchBackground(string Theme)
{

    switch(Theme)
    {

        case "GreenHell":
            PlayerPrefs.SetString("Theme", "Normal");

            break;

        case "NeonCity":
            PlayerPrefs.SetString("Theme", "Tron");

            break;

    }

    SwitchBackgroundFunction(); 

}

private void SwitchBackgroundFunction()
{
    int prefabCount = Prefabs.Length;

    if (PlayerPrefs.GetString("Theme") == "Normal")
    {
        mainCamera.backgroundColor = colorNormal;

        for (int i = 0; i <= prefabCount - 1; i++)
        {
            Prefabs[i].GetComponent<SpriteRenderer>().sprite = normalSprites[i];
        }
    }
    if (PlayerPrefs.GetString("Theme") == "Tron")
    {
        mainCamera.backgroundColor = Color.black;

        for (int i = 0; i <= prefabCount - 1; i++)
        {
            Prefabs[i].GetComponent<SpriteRenderer>().sprite = tronSprites[i];
        }
    }

}


// Update is called once per frame
void Update () {

}

}

【问题讨论】:

  • 嗨,你需要发布你的代码,这样人们就不会发布你尝试过的东西。编辑您的问题,添加语言标签,然后添加您用于更改 Sprite 的代码。
  • 我只是将预制对象填充到 GameObject Prefabs 数组中,并将我的主题精灵表的不同精灵填充到 normalSprites / tronSprites 数组中。而且因为我的场景中有很多放置的对象(带有一堆必须更改的资产的图块),我想我会更改预制件的精灵,所以对象取决于一次全部更改。

标签: unity3d themes 2d sprite switching


【解决方案1】:

您可以执行以下操作,在运行时从资源文件夹中交换精灵。

Sprite spr;
spr = Resources.Load<Sprite>("mysprite"); //insert name and file path to sprite within Resources folder
GetComponent<SpriteRenderer>().sprite = spr;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多