Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка в юнити CS0246

Дмитрий Науменко Ученик (131), закрыт 1 месяц назад
Пишет ошибка

Assets\GameScript.cs(54,5): error CS0246: The type or namespace name 'IENumerator' could not be found (are you missing a using directive or an assembly reference?)

вот код

using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;
using System.Collections;

public class GameScript : MonoBehaviour
{
public static int money;
public static int rate = 1;
public static int UpgradePrice = 16;
public static int Stamin = 500;
public static int MaxStamin = 500;
public static int StaminPrice = 16;

public Text moneyText;
public Text upgradeText;
public Text MaxStamintext;
public Text Stamintext;
public GameObject Coin1;
public GameObject Energy;
public Text StaminUpgradeText;

public void StaminUpdate()
{
if (money >= StaminPrice)
{
money -= StaminPrice;
MaxStamin += 500;
Stamin = MaxStamin;
StaminPrice *= 2;


PlayerPrefs.SetInt("money", money);
PlayerPrefs.SetInt("StaminPrice", StaminPrice);
PlayerPrefs.SetInt("MaxStamin", MaxStamin);
PlayerPrefs.SetInt("Stamin", Stamin);
}
}

public void Staminka()
{
if (Stamin >= rate)
Coin1.SetActive(true);
else
Coin1.SetActive(false);
}


IENumerator test()
{
while (true)
{
Stamin += 3;
yield return NewWaitForSeconds(2f);
}
}


private void Start()
{
money = PlayerPrefs.GetInt("money", 0);
rate = PlayerPrefs.GetInt("rate", 1);
UpgradePrice = PlayerPrefs.GetInt("UpgradePrice", 16);
Stamin = PlayerPrefs.GetInt("Stamin", 500);
MaxStamin = PlayerPrefs.GetInt("MaxStamin", 500);
StaminPrice = PlayerPrefs.GetInt("StaminPrice", 16);
}

public void Click()
{
Stamin -= rate;
money += rate;
PlayerPrefs.SetInt("money", money);
}

public void UpgradeClick()
{
if (money >= UpgradePrice)
{
money -= UpgradePrice;
rate += 1;
UpgradePrice *= 2;


PlayerPrefs.SetInt("money", money);
PlayerPrefs.SetInt("rate", rate);
PlayerPrefs.SetInt("UpgradePrice", UpgradePrice);
}
}

public void Update()
{
moneyText.text = "$" + money;
upgradeText.text = "$" + UpgradePrice;
StaminUpgradeText.text = "$" + StaminPrice;
Stamintext.text = "" + Stamin;
MaxStamintext.text = "" + MaxStamin;
Recovery();
Staminka();
PlayerPrefs.SetInt("StaminPrice", StaminPrice);
PlayerPrefs.SetInt("MaxStamin", MaxStamin);
PlayerPrefs.SetInt("Stamin", Stamin);
PlayerPrefs.SetInt("money", money);
PlayerPrefs.SetInt("rate", rate);
PlayerPrefs.SetInt("UpgradePrice", UpgradePrice);
}
}
Лучший ответ
Beta Мудрец (14700) 1 месяц назад
Ошибка CS0246 в Unity чаще всего возникает, когда ты используешь тип данных или пространство имен, которое не подключено к твоему скрипту. В твоем случае проблема в IENumerator. Чтобы ее исправить, добавь в начало файла строку:
 using System.Collections; 
Эта строка импортирует пространство имен System.Collections, в котором и находится IENumerator.
Вот такой код например получится:
 using UnityEngine; 
using UnityEngine.UI;
using System.Collections.Generic;
using System.Collections; // Добавь эту строку

public class GameScript : MonoBehaviour
{
// ... остальной твой код
}
Так же убедись, что ты правильно пишешь IENumerator, а не IEnumerator (обрати внимание на заглавную 'I').
Иногда Unity может не сразу "увидеть" изменения в коде. Попробуй перезагрузить редактор Unity, если ошибка не исчезает после добавления using.
Используй Visual Studio Code или Rider: эти IDE имеют лучшую поддержку C# и Unity, чем MonoDevelop (стандартный редактор Unity). Они могут подсвечивать ошибки в реальном времени и предлагать варианты исправления.
Остальные ответы
4324242 3432423 Ученик (40) 1 месяц назад
тут нету программистов нормальных пиши на другие форумы
Похожие вопросы