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

Ошибка в коде

Дмитрий Светик Знаток (277), закрыт 3 года назад
Assets\Script\buyScript.cs(32,13): error CS0120: An object reference is required for the non-static field, method, or property 'moneyScript.gem'
вот первый скрипт
public void buy()
{
if (moneyScript.gem >= price && isPurchased = false)
{
PlayerPrefs.SetInt(ppname, 1);
priceText.text = "Sold";
isPurchased = true;
}
else if(isPurchased == true) {
StartCoroutine(select());
}
}

IEnumerator select()
{
string lastText = priceText.text;
moneyScript.selectedScin = scinNum;
yield return new WaitForSeconds(0.5f);
priceText.text = lastText;
}
вот второй
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class moneyScript : MonoBehaviour
{
public int gem;
public static int selectedScin;

[SerializeField] public Text gemText;

// Start is called before the first frame update
void Start()
{
gem = PlayerPrefs.GetInt("gem");
gemText.text = gem.ToString();
Debug.Log(selectedScin);
}
}
Лучший ответ
Максим Искусственный Интеллект (196689) 3 года назад
Это значит, что ты вызвал не static-метод через класс, а надо через объект. Ты сделал, например, так:
SomeClass.SomeMethode();
А надо так:
SomeClass obj = new SomeClass();
obj.SomeMethode();
Дмитрий СветикЗнаток (277) 3 года назад
я немного не понял что мне надо будет сделать в моём скрипте может объяснить на моем скрипте если можете
Максим Искусственный Интеллект (196689) Дмитрий Светик, moneyScript это у тебя не объект, а класс. И почему-то с маленькой буквы. А как создаются объекты, я написал. Через new.
Дмитрий СветикЗнаток (277) 3 года назад
так вот я не понимаю что сделать та надо можешь просто написать как правильно
Максим Искусственный Интеллект (196689) Дмитрий Светик, сделай moneyScript с большой буквы, чтобы было ясно, что это класс, а не локальная переменная. Потом создай объект MoneyScript money = new MoneyScript(); Script вообще из имени желательно убрать, потому что он не несёт смысла. Если объект должен сохранять данные, тогда создать его нужно на уровне класса вне метода наверху.
Дмитрий СветикЗнаток (277) 3 года назад
я конечно понимаю то что ты пишешь но не понимаю как это сделать я новичок
Максим Искусственный Интеллект (196689) Дмитрий Светик, isPurchased == true так писать не надо. isPurchased уже либо true, либо false, поэтому просто if (isPurchased)
Остальные ответы
Похожие вопросы