Не удается получить доступ к полям экземпляров абстрактного класса в массиве - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь создать игру FPS в единстве, и я пытаюсь использовать оружие для персонажа.Для этого у меня есть:

  • публичный абстрактный класс оружия
  • класс MachineGun, наследующий от Weapon.cs
  • класс персонажа, с массивом экипированного оружия.

Класс оружия:

public abstract class Weapon : MonoBehaviour { 
    lots of weapon code
}

Класс пулемета:

public class MachineGun : Weapon{
    lots of machinegun code
}

В классе Персонажа я делаю это:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

//keeps track of all the character properties
public class Character : MonoBehaviour {

     public GameObject[] _equipedWeapons = new GameObject[10];     //an array of all the weapons a character has

private void Start()
{
    _equipedWeapons = new GameObject[10];                               //size of the weapons array, TEMP 10
    _equipedWeapons[0] = new GameObject();
    _equipedWeapons[0] = GameObject.FindWithTag("Weapon0");
}

и вот где моя проблема:

public void IncreaseBullets(int amount)
{
    _equipedWeapons[0].;
}

Я не могу получить доступ к количеству пуль, которое есть у этого пулемета.На самом деле, я не могу получить доступ к его собственным полям пулемета, ИЛИ к унаследованным полям оружия.

1 Ответ

0 голосов
/ 07 июня 2018

Я предполагаю, что вы прикрепили скрипт MachineGun к GameObject.
Вы пытаетесь получить доступ к свойствам GameObject.Что вам нужно сделать, так это сначала получить Сценарий Пулемета.

MachineGun weaponScript = _equipedWeapons[0].GetComponent<MachineGun>();
weaponScript.

Вы также можете получить Сценарий Оружия, как этот.Если вы хотите получить доступ к различным типам оружия одним и тем же способом.

Weapon weaponScript = _equipedWeapons[0].GetComponent<Weapon>();
weaponScript.
...