2017-01-21 6 views
0

Я пытаюсь сохранить некоторые переменные при смене сцены (жизни и драгоценных камнях).Сохранять переменные между сценами с DontDestroyOnLoad не работает

С DontDestroyOnLoad объект не уничтожает, но переменные делают, и сбрасывают до 5 жизней и 0 камней.

Вот мой код

GameControlle

void Start() 
{ 
    GameObject keeper = GameObject.Find ("VARKEEPER"); 
    varkeeper = keeper.GetComponent<KeepVars>(); 
} 

void Update() 
{ 
    LiveChecker(); 
} 

void LiveChecker() 
{ 
    if (lives == 5) { 
     lives1.enabled = true; 
     lives2.enabled = true; 
     lives3.enabled = true; 
     lives4.enabled = true; 
     lives5.enabled = true; 
    } else if (lives == 4) { 
     lives1.enabled = true; 
     lives2.enabled = true; 
     lives3.enabled = true; 
     lives4.enabled = true; 
     lives5.enabled = false; 
    } else if (lives == 3) { 
     lives1.enabled = true; 
     lives2.enabled = true; 
     lives3.enabled = true; 
     lives4.enabled = false; 
     lives5.enabled = false; 
    } else if (lives == 2) { 
     lives1.enabled = true; 
     lives2.enabled = true; 
     lives3.enabled = false; 
     lives4.enabled = false; 
     lives5.enabled = false; 
    } else if (lives == 1) { 
     lives1.enabled = true; 
     lives2.enabled = false; 
     lives3.enabled = false; 
     lives4.enabled = false; 
     lives5.enabled = false; 
    } else if (lives <= 0) { 
     lives1.enabled = false; 
     lives2.enabled = false; 
     lives3.enabled = false; 
     lives4.enabled = false; 
     lives5.enabled = false; 
    } 
} 

VarKeeper

public int lives; 
public int gems; 

GameControlle gameController; 

// Use this for initialization 
void Awake() 
{ 
    DontDestroyOnLoad (this); 
} 

void Start() 
{ 
    GameObject player = GameObject.Find ("Character"); 
    gameController = player.GetComponent<GameControlle>(); 

} 

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

    lives = gameController.lives; 

    gems = gameController.gems; 
} 

Система Я использую, чтобы получить ВАР не может быть правильный один ..

+0

Где вы устанавливаете значения (5 и 0)? Я подозреваю, что 'lives = gameController.lives' (и тот, что для драгоценных камней) возвращает их к этому, и на самом деле это не проблема с' DontDestroyOnLoad'. –

+0

На стороне: предлагаю изменить систему обновления вашей жизни. Не выполняйте все эти утверждения if. Огоньте некоторое обновление, когда вы на самом деле меняете жизнь. –

+0

Или, по крайней мере, не каждый «Update()» - это то, что я имею в виду. –

ответ

0

Хорошо, просто решил.

В основном я сделал, чтобы VarKeeper контролировал все переменные (драгоценные камни и жизни). Я изменил на GameController все, что включало lives в varkeeper.lives, и то же самое с драгоценными камнями.

В основном, что решило его