Это сценарий, в котором идет действие касания, основная игра на нем
var addingGoldPerSec = new GameObject();
var buttonInstance = addingGoldPerSec.AddComponent<ItemButton>();
StartCoroutine(buttonInstance.addGoldLoop());
А это тот, где у меня есть сопрограмма
public double goldPerSec
{
get
{
if (!PlayerPrefs.HasKey("_goldPerSec"))
{
return 0;
}
string tmpStartGoldPerSec = PlayerPrefs.GetString("_goldPerSec");
return double.Parse(tmpStartGoldPerSec);
}
set
{
PlayerPrefs.SetString("_goldPerSec", value.ToString());
}
}
public void updateUI()
{
priceDisplayer.text = LargeNumber.ToString(currentCostPerSec).ToString();
coinDisplayer.text = "PER SEC\n" + LargeNumber.ToString(goldPerSec).ToString();
levelDisplayer.text = "LEVEL\n" + level + "/150".ToString();
}
public IEnumerator addGoldLoop()
{
while (DataController.Instance.gold <= 1e36)
{
DataController.Instance.gold += goldPerSec;
if (Gameplay.Instance.booster == 1)
{
yield return new WaitForSeconds(0.25f);
}
else if (Gameplay.Instance.booster == 0)
{
yield return new WaitForSeconds(1.0f);
}
}
}
И это Третий сценарий, в котором я управляю данными, хранящимися в PlayerPrefs
public void loadItemButton(ItemButton itemButton)
{
itemButton.level = PlayerPrefs.GetInt("_level",1);
PlayerPrefs.GetString("_costPerSec", itemButton.currentCostPerSec.ToString());
PlayerPrefs.GetString("_goldPerSec",itemButton.goldPerSec.ToString());
}
public void saveItemButton(ItemButton itemButton)
{
PlayerPrefs.SetInt("_level", itemButton.level);
PlayerPrefs.SetString("_costPerSec", itemButton.currentCostPerSec.ToString());
PlayerPrefs.SetString("_goldPerSec", itemButton.goldPerSec.ToString());
}
У меня есть второй сценарий, который является сопрограммным и прикреплен к нескольким игровым объектам, где есть кнопка Upgrade, при каждом обновлении монета увеличивается на секунду, когда вы зарабатываете, Основная проблема здесь заключается в том, что сопрограмма просто останавливается после того, как я касаюсь экрана, поэтому я сделал другой код в основном скрипте, чтобы таким образом сопрограмма продолжала работать даже после касания экрана, поэтому я создал скрипт, где находится GameObject, но он просто выдает мне NullReferenceException, пробовал проверить с помощью TryCatch и выдает мне, что проблема связана с GameObject, который я создал на основном скрипте, но если это так, мне нужно присоединиться к основному объекту, где существует основной скрипт, как более 10 игровых объектов, где сопрограмма существует, я думаю, синглет Это не тот путь, он удаляет мне всю информацию, приведенную выше, путем создания экземпляра Awake, я никогда не думал о создании stati c, поэтому я сделал, как вы сказали, и мне нужно изменить почти мой код, каждый текст прикреплен к каждый объект игры, для того, чтобы не являющийся членом c член работал с нужным членом c, должен удалить Monobehaviour, но это просто заставляет игру взорваться, спасибо за помощь.