Как я могу создать систему индексов из этой системы? Unity C#

#c# #visual-studio #unity3d

#c# #visual-studio #unity3d

Вопрос:

Я создал систему для построения башен с помощью руководства brackeys. Я хочу выбирать башни по индексу скриптового объекта, но я не могу использовать массивы в TurretBP.

TurretBP хранит все данные турели

Buildmanager создает экземпляры turres

И метод SelectTurret(), прикрепленный к кнопкам

Вот код:

 using UnityEngine;
using UnityEngine.UI;

public class Shop : MonoBehaviour
{
    public TurretBP turret; 
    public TurretBP Jamsheed;
    public TurretBP Farm;
    public TurretBP Otbaphou;
    public TurretBP Guard;
    public int turretIdx;

    BuildManager buildManager;

    private void Start()
    { 
        buildManager = BuildManager.instance;
    }


    public void SelectTurret()
    {
        buildManager.SelectTurretToBuild(turret);
    }

    public void SelectJamsheed()
    {
        buildManager.SelectTurretToBuild(Jamsheed);
    }

    public void SelectFarm()
    {
        buildManager.SelectTurretToBuild(Farm);
    }

    public void SelectOtbaphou()
    {
        buildManager.SelectTurretToBuild(Otbaphou);
    }

    public void SelectGuard()
    {
        buildManager.SelectTurretToBuild(Guard);
    }



}
  

Ответ №1:

Вы можете использовать массивы (idk, почему вы написали, что не можете):

     [SerializeField] private TurretBP[] towers; 

    public enum Towers
    {
        TURRET = 0,
        JAMSHEED = 1,
        FARM = 2,
        OTBAPHOU = 3,
        GUARD = 4
    }

    public TurretBP GetTower(int index)
    {
        return towers[index];
    }

  

Затем вы можете вызвать buildManager.SelectTurretToBuild(GetTower(Towers.Guard));
или buildManager.SelectTurretToBuild(GetTower(4));