【发布时间】: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