2017-08-21 7 views
0

実行中に複数のオブジェクトのスピリット画像を変更する方法についての質問。Unity3dプレハブを使用したスプライトの変更

私は小さなレーサー2dゲームを作ったので、あなたは異なったテーマを選ぶことができます。統合されたメニュー(別々のシーンではない)にこのオプションがあります。

私の質問: 実行時にスプライトを簡単に切り替えることはできますか? Iveはトラック要素ごとにプレハブを作成しました。プレハブのスプライトを変更しましたが、シーンがリロードされた後にのみ変更が表示されます。だから私はこれを避ける必要があります。

誰かに解決策やヒントを教えてもらえますか?

ありがとうございます!

コード:

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

こんにちは、あなたが試したことを人が投稿しないようにコードを投稿する必要があります。質問を編集し、言語タグを追加してから、Spriteを変更するコードを追加します。 – Programmer

+0

私は、プレハブオブジェクトをGameObject Prefabs Arrayに入れただけでなく、私のThemesスプライトシートのdifferentndスプライトをnormalSprites/tronSprites Arrayに入れました。私はシーン内にたくさんの配置されたオブジェクト(変更しなければならない資産の束を持つタイル)を持っているので、プレハブのスプライトを変更します。オブジェクトは一度にすべてを変更することに依存しています。 – IDK

答えて

0

あなたは実行時に、リソースフォルダ内からスプライトにスワップするために、次の線に沿って何かを行うことができます。

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