Здраствуйте!
У меня ошибка в коде . Переискал весь интернет, но все ровно не могу найти такой же случай как у меня. Ошибка пишет:error CS1061: Type Clicker does not contain a definition for AddMoney and no extension method AddMoney of type Clicker could be found (are you missing a using directive or an assembly reference?) (ПЕРЕВОД: ошибка CS1061: Тип Clicker не содержит определения для AddMoney, и не удалось найти метод расширения AddMoney типа Clicker (вам не хватает директивы using или ссылки на сборку?) )
Код номер 1 в котором ошибка:(ОШИБКА НА 38 СТРОКЕ)
Синтаксис:
Используется csharp
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
public class AmplifierPref : MonoBehaviour, IPointerClickHandler
{
[SerializeField]
private TextMeshProUGUI level;
[SerializeField]
private TextMeshProUGUI price;
private DamageAmplifier amplifier;
private CanvasGroup group;
public void SetData(DamageAmplifier amplifier)
{
group = GetComponent<CanvasGroup>();
this.amplifier = amplifier;
UpdateUI();
}
public void UpdateUI()
{
level.text = "x" + amplifier.Level;
price.text = "$" + amplifier.Price;
group.alpha = Clicker.Instanse.Money >= amplifier.Price ? 1 : .5f;
}
public void OnPointerClick(PointerEventData eventData)
{
if (Clicker.Instanse.Money < amplifier.Price)
return;
Clicker.Instanse.AddMoney(-amplifier.Price);
amplifier.LevelUp();
UpdateUI();
}
}
using UnityEngine;
using UnityEngine.EventSystems;
public class AmplifierPref : MonoBehaviour, IPointerClickHandler
{
[SerializeField]
private TextMeshProUGUI level;
[SerializeField]
private TextMeshProUGUI price;
private DamageAmplifier amplifier;
private CanvasGroup group;
public void SetData(DamageAmplifier amplifier)
{
group = GetComponent<CanvasGroup>();
this.amplifier = amplifier;
UpdateUI();
}
public void UpdateUI()
{
level.text = "x" + amplifier.Level;
price.text = "$" + amplifier.Price;
group.alpha = Clicker.Instanse.Money >= amplifier.Price ? 1 : .5f;
}
public void OnPointerClick(PointerEventData eventData)
{
if (Clicker.Instanse.Money < amplifier.Price)
return;
Clicker.Instanse.AddMoney(-amplifier.Price);
amplifier.LevelUp();
UpdateUI();
}
}
Код номер два в который я обращаюсь из первого:(МЕТОД НА 100 СТРОКЕ)
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class Clicker : MonoBehaviour
{
public static Clicker Instanse;
public float Money
{
get => PlayerPrefs.GetFloat("Money", 0);
private set => PlayerPrefs.SetFloat("Money", value);
}
[SerializeField]
private TextMeshProUGUI money;
[SerializeField]
private List<AmplifierPref> amplifierPrefs;
private List<DamageAmplifier> amplifiers;
private void Awake()
{
Instanse = this;
}
void Start()
{
amplifiers = new List<DamageAmplifier>()
{
new DamageAmplifier(DamageAmplifier.AmplifierType.PLUS_CLICK_DAMAGE, 0, false, 2, 1.5F, 100, 75),
new DamageAmplifier(DamageAmplifier.AmplifierType.CLICK_CRIT, 100, false, 2, 2f, 200, 100, 25),
new DamageAmplifier(DamageAmplifier.AmplifierType.PASSIVE_DAMAGE, 0, true, 2, 1.25f, 125, 50),
};
for (int i = 0; i < amplifierPrefs.Count; i++)
amplifierPrefs[i].SetData(amplifiers[i]);
StartCoroutine(PassiveDamageDealer());
UpdateUI();
}
private IEnumerator PassiveDamageDealer()
{
while (true)
{
yield return new WaitForSeconds(1);
DamageTarget(GetPassiveDamage());
}
}
public void Click()
{
DamageTarget(GetClickDamage());
}
private void DamageTarget(float damage)
{
AddMoney(damage);
}
private float GetClickDamage()
{
float damage = 1;
var sortedAmplifiers = amplifiers.FindAll(x => !x.IsPassive);
sortedAmplifiers.Sort((x, y) => x.Priority.CompareTo(y.Priority));
foreach (var amplifier in sortedAmplifiers)
damage = amplifier.CalculateDamage(damage);
return damage;
}
private float GetPassiveDamage()
{
float damage = 0;
var sortedAmplifiers = amplifiers.FindAll(x => x.IsPassive);
sortedAmplifiers.Sort((x, y) => x.Priority.CompareTo(y.Priority));
foreach (var amplifier in sortedAmplifiers)
damage = amplifier.CalculateDamage(damage);
return damage;
}
public void UpdateUI()
{
money.text = "$" + (int)Money;
}
public void AddMoney(float value)
{
Money += value;
UpdateUI();
foreach (var pref in amplifierPrefs)
pref.UpdateUI();
}
}
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class Clicker : MonoBehaviour
{
public static Clicker Instanse;
public float Money
{
get => PlayerPrefs.GetFloat("Money", 0);
private set => PlayerPrefs.SetFloat("Money", value);
}
[SerializeField]
private TextMeshProUGUI money;
[SerializeField]
private List<AmplifierPref> amplifierPrefs;
private List<DamageAmplifier> amplifiers;
private void Awake()
{
Instanse = this;
}
void Start()
{
amplifiers = new List<DamageAmplifier>()
{
new DamageAmplifier(DamageAmplifier.AmplifierType.PLUS_CLICK_DAMAGE, 0, false, 2, 1.5F, 100, 75),
new DamageAmplifier(DamageAmplifier.AmplifierType.CLICK_CRIT, 100, false, 2, 2f, 200, 100, 25),
new DamageAmplifier(DamageAmplifier.AmplifierType.PASSIVE_DAMAGE, 0, true, 2, 1.25f, 125, 50),
};
for (int i = 0; i < amplifierPrefs.Count; i++)
amplifierPrefs[i].SetData(amplifiers[i]);
StartCoroutine(PassiveDamageDealer());
UpdateUI();
}
private IEnumerator PassiveDamageDealer()
{
while (true)
{
yield return new WaitForSeconds(1);
DamageTarget(GetPassiveDamage());
}
}
public void Click()
{
DamageTarget(GetClickDamage());
}
private void DamageTarget(float damage)
{
AddMoney(damage);
}
private float GetClickDamage()
{
float damage = 1;
var sortedAmplifiers = amplifiers.FindAll(x => !x.IsPassive);
sortedAmplifiers.Sort((x, y) => x.Priority.CompareTo(y.Priority));
foreach (var amplifier in sortedAmplifiers)
damage = amplifier.CalculateDamage(damage);
return damage;
}
private float GetPassiveDamage()
{
float damage = 0;
var sortedAmplifiers = amplifiers.FindAll(x => x.IsPassive);
sortedAmplifiers.Sort((x, y) => x.Priority.CompareTo(y.Priority));
foreach (var amplifier in sortedAmplifiers)
damage = amplifier.CalculateDamage(damage);
return damage;
}
public void UpdateUI()
{
money.text = "$" + (int)Money;
}
public void AddMoney(float value)
{
Money += value;
UpdateUI();
foreach (var pref in amplifierPrefs)
pref.UpdateUI();
}
}