2017-12-02 6 views
0

それぞれの個別のゲームオブジェクトのアクティブ状態を保存したいので、リロードするときに収集したものはもう存在しません。 マイコード:Unity GameObject setActive playerprefsに保存

public class PlayerController : MonoBehaviour { 

    public LevelManager levelManager;   
    public GameObject[] stardust; //array of stardust in level 
    public int isActive; //variable for amount of stardust collected 

    void Start() 
    {    
     isActive = PlayerPrefs.GetInt("stardust"); 
     active(); 
    } 

    void OnTriggerEnter(Collider other) 
    {  
     //Stardust 
     if (other.gameObject.CompareTag("stardust")) 
     { 
      isActive = 1; 
      PlayerPrefs.SetInt("stardust", isActive);   
      active(); 
      //other.gameObject.SetActive(false); 
      levelManager.score++; 
      levelManager.setScoreText(); 
      audioSource.Play(); 
      PlayerPrefs.SetInt("score", levelManager.score); 
     } 
    } 

    void active() 
    { 
     if (isActive == 0) //if none are collected 
     { 
      for (int i = 0; i < stardust.Length; i++) 
      { 
       stardust[i].SetActive(true); //make all visible 
      } 
     } 
     if (isActive == 1) //first one collected 
     { 
      stardust[0].SetActive(false); 
      stardust[1].SetActive(false); 
      stardust[2].SetActive(false); 
     }  
    } 
} 

をあなたは私が個別に各1をチェックしないか、それが非アクティブにすべてのオブジェクトを設定し、見ることができるように?

私はすべてのスターダストに対して、playerprefsで単一のキーを使用しています。むしろスターダストごとにキーを設定すべきですか?

私はそれぞれ独自の方法でそれぞれをチェックしていない成功

+0

[Unityでゲームオブジェクトをシリアライズして保存する方法](https://stackoverflow.com/questions/36852213/how-to-serialize-and-save-a-gameobject-in-unity)の可能な複製 –

答えて

0

ハイテクCurstin Visagie、 に個別にアクティブに設定して、それが一つのキーで動作文句を言わない、playerprefs値がなる、EventTriggerの下で、タグによって、それぞれを比較してみました上書きするには、スターダストごとに各キーを作成する必要があります。

関連する問題