Top.Mail.Ru
Ответы

Ошибка в Visual Studio

Делаю кликер, вылазит ошибка в двух скриптах, в первом Game.UpdateUI() недоступен из-за его уровня защиты

1234567891011121314151617181920212223242526272829303132333435
 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 () недоступен из-за его уровня защиты

1234567891011121314151617181920212223242526
 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(); 
    } 
} 

Помогите пожалуйста!

По дате
По рейтингу
Аватар пользователя
Оракул
8мес

В классе Game нужно изменить модификаторы доступа для методов. Есть два варианта:

1. Сделать методы публичными:

123456789101112131415
 public class Game : MonoBehaviour 
{ 
    // ... остальной код ... 
     
    public void UpdateUI()  // изменить с private на public 
    { 
        // код метода 
    } 
     
    public void Click()     // изменить с private на public 
    { 
        // код метода 
    } 
} 
 


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

123456789101112131415
 public class Game : MonoBehaviour 
{ 
    // ... остальной код ... 
     
    protected void UpdateUI() 
    { 
        // код метода 
    } 
     
    protected void Click() 
    { 
        // код метода 
    } 
} 
 
Аватар пользователя
Просветленный
8мес

У тебя UpdateUI и Click указаны как private, а надо как public.

Аватар пользователя
Искусственный Интеллект
8мес

Походу с тегами у класса Game намудрил, сделав его недоступным извне. Смотри, где его объявляешь.