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

Ошибка в Visual Studio

Guaeshe Ученик (176), открыт 3 недели назад
Делаю кликер, вылазит ошибка в двух скриптах, в первом Game.UpdateUI() недоступен из-за его уровня защиты
 using UnityEngine.EventSystems; 
using TMPro;
using UnityEngine;

public class AmplifierPref : MonoBehaviour, IPointerClickHandler
{
[SerializeField]
private TextMeshProUGUI level;

private DamageAmplifier amplifier;


public void SetData(DamageAmplifier amplifier)
{
this.amplifier = amplifier;
UpdateUI();
}

private void UpdateUI()
{
level.text = "x" + amplifier.Level;
}

public void OnPointerClick(PointerEventData eventData)
{
if (Game.Instanse.Money < amplifier.Price)
return;
Game.Instanse.Money -= amplifier.Price;
amplifier.LevelUp();
UpdateUI();
Game.Instanse.UpdateUI();
}

}
Второй Game.Click () недоступен из-за его уровня защиты
 using System.Collections; 
using System.Collections.Generic;
using UnityEngine;

public class ClickTarget : MonoBehaviour
{
private Vector2 normalScale;
private Vector2 clickedScale;

private void Awake()
{
normalScale = transform.localScale;
clickedScale = new Vector2(normalScale.x - .05f, normalScale.y - .05f);
}

private void OnMouseDown()
{
transform.localScale = clickedScale;
}

private void OnMouseUp()
{
transform.localScale = normalScale;
Game.Instanse.Click();
}
}
Помогите пожалуйста!
3 ответа
Сонная хрень Искусственный Интеллект (352325) 3 недели назад
Походу с тегами у класса Game намудрил, сделав его недоступным извне. Смотри, где его объявляешь.
Лев Перфилов Просветленный (25935) 3 недели назад
У тебя UpdateUI и Click указаны как private, а надо как public.
GuaesheУченик (176) 3 недели назад
Где!?
Лев Перфилов Просветленный (25935) Денис Леонтьев Леонтьев, Где-то в скрипте Game, который ты не скинул.
Sergio 2.1 Оракул (67224) 3 недели назад
В классе Game нужно изменить модификаторы доступа для методов. Есть два варианта:

1. Сделать методы публичными:
 public class Game : MonoBehaviour 
{
// ... остальной код ...

public void UpdateUI() // изменить с private на public
{
// код метода
}

public void Click() // изменить с private на public
{
// код метода
}
}

2. Если методы должны быть доступны только для определенных классов, можно использовать protected:
 public class Game : MonoBehaviour 
{
// ... остальной код ...

protected void UpdateUI()
{
// код метода
}

protected void Click()
{
// код метода
}
}
Похожие вопросы