Как скрыть в инспекторе унаследованные поля родительского класса С# - Unity
Данный класс UnitState, родительский к такому классу как PlayerState а он родитель класса Ability отвечающие за Состояние игрока и за его способности соответственно. В данном классе UnitState есть поля отвечающие за базовые характеристика юнита, его прокачку, уровень и здоровье.
Юнит - в данном проекте сущность которая может иметь такие параметры.
И так как Ability унаследуется от PlayerState то я в инспекторе вижу данные поля да и в целом унаследовал их, какой способ мне нужен чтобы класс Ability не смог унаследовать некоторые ненужные мне поля? Или хотябы скрыть их в инспекторе движка?
Класс Ability и PlayerState только добавляют новые поля не трогая унаследованные поля
Класса PlayerState в инспекторе
Класс RageAbility наследник Ability в инспекторе
Класс UnitState
public class UnitState : MonoBehaviour
{
[System.Serializable]
public struct StatsValues
{
public int maxLevel;
[Space]
public float maxHealth;
public float damage;
public StatsValues(float maxHealth, float damage, int maxLevel)
{
this.maxHealth = maxHealth;
this.damage = damage;
this.maxLevel = maxLevel;
}
}
[System.Serializable]
public struct LevelUpgrades
{
[Range(2, 100)] public int level;
public float maxHealth;
public float damage;
}
[SerializeField] private StatsValues _stats;
[Space]
[SerializeField] private List<LevelUpgrades> _levelUpgrades;
[Header("Status")]
[SerializeField] private int _currentLevel;
[SerializeField] private float _health;
[Header("Links")]
[SerializeField] private GameObject _damagerObject;
}
Ответы (2 шт):
какой способ мне нужен чтобы класс Ability не смог унаследовать некоторые ненужные мне поля?
как и во всех языках мира - сделать поля приватными
Или хотябы скрыть их в инспекторе движка?
сделать поля приватными и не SerializeField либо [HideInInspector]
Сделать так,чтобы SerializeField и public переменные не видил класс наследник,можно. Я лично устанавливаю таким полям {get;private set;} свойства,и всё работает как надо.

