我有一个关于如何在运行时为一堆对象更改spirte图像的问题。
所以我做了一个小型赛车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 () {
}
}
答案 0 :(得分:0)
您可以在以下几行中执行某些操作,以便在运行时从资源文件夹中交换精灵。
Sprite spr;
spr = Resources.Load<Sprite>("mysprite"); //insert name and file path to sprite within Resources folder
GetComponent<SpriteRenderer>().sprite = spr;