У меня есть два класса (один из которых унаследован от другого), и я хочу переопределить одну из функций, которые я определил в классе, однако при попытке использовать переменные, определенные в унаследованном классе, выдается ошибка «Переменная». недоступен из-за уровня защиты. Я предполагаю, что это связано с тем, что он пытается использовать переменные в унаследованном классе, а не в классе, в котором находится переопределение, но я не уверен, как заставить единство использовать переменные в класс, а не тот, который находится в унаследованном классе.
Пример:
Код: Выделить всё
public class InheritedClass : MonoBehaviour
{
public int x;
public virtual void Divideby2(int num) {
Debug.Log(num/2);
}
}
Код: Выделить всё
public class Inheritor1 : InheritedClass
{
}
Код: Выделить всё
public class Inheritor2 : InheritedClass
{
public override void DivideBy2(int num) {
Debug.Log(num/x)
}
}
Actual code
Код: Выделить всё
public class Weapon : MonoBehaviour
{
public GameObject AttackPrefab, SpecialPrefab, ThisWeaponPrefab, AttackSequenceFinisherPrefab;
private Vector3 MousePosition;
[SerializeField] private float SpecialCooldown, AttackCooldown, FinisherCooldown, AttackSequenceTimeToEnd;
private float TimePassed, RotationY, TimeToHold, AttackSequenceEndTime, SpecialCooldownTimer, FinisherCooldownTimer;
public int MaxAttackSequence;
[HideInInspector] public int AttackSequence;
private bool CanSpecial, CanAttack;
public virtual void AttackDetermine(int num)
{
MousePosition = Input.mousePosition;
if (MousePosition.x < 0) {MousePosition.x = 0;}
if (MousePosition.x > Screen.width) {MousePosition.x = Screen.width;}
if (MousePosition.y < 0) {MousePosition.x = 0;}
if (MousePosition.y > Screen.height) {MousePosition.x = Screen.height;}
MousePosition.y -= (Screen.height / 2);
MousePosition.x -= (Screen.width / 2);
RotationY = Mathf.Atan2(MousePosition.y, MousePosition.x) * Mathf.Rad2Deg - 90;
if ((num == 2) & (Character.instance.BusyTime = 0)){
CanSpecial = true;
}
else if ((num == 1) & (Character.instance.BusyTime Screen.height) {MousePosition.x = Screen.height;}
MousePosition.y -= (Screen.height / 2);
MousePosition.x -= (Screen.width / 2);
RotationY = Mathf.Atan2(MousePosition.y, MousePosition.x) * Mathf.Rad2Deg - 90;
Vector3 relativePos = Character.instance.InGameCharacter.transform.position - Enemy.instance.InGameCharacter.transform.position;
RotationEnemy = Quaternion.LookRotation(relativePos, Vector3.up);
if ((num == 2) & (Character.instance.BusyTime = 0)){
CanSpecial = true;
}
else if ((num == 1) & (Character.instance.BusyTime
Источник: [url]https://stackoverflow.com/questions/78140236/how-do-you-use-varaibles-within-an-override-function-from-an-inherited-class[/url]
Мобильная версия