Здравствуйте.
Подскажите пожалуйста как ограничить выбор одного элемента цикла при общем кол-ве выбора элементов 4.
Есть меню выбора оружия, нужно сделать выбор четырех пушек, что бы каждую можно было выбрать только один раз.
Сейчас одну и ту же пушку в цикле for можно выбрать все четыре раза
Я думаю надо сделать какую то проверку на "выбранность", но как это должно выглядеть в голову не приходит, да и может тут что-то другое нужно...
Скрипт:
Код
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
public class WeaponMenuV2 : MonoBehaviour {
public int _Id = 0;
public string weapString;
public int CountWeapon = 2;
public bool showWeaponMenu;
public GUISkin guiSKin;
public List<TypeWeaponSelectNew> _TypeWeaponSelect = new List<TypeWeaponSelectNew>(); //Массив с оружием для выбора.
public List<int> SelectIdWeapon = new List<int>(); //Массив Айди выбранного оружия.
public List<string> SelectWeap = new List<string>();
void Start()
{
Debug.Log(PlayerPrefs.GetInt("weap1"));
PlayerPrefs.DeleteAll();
}
void OnGUI()
{
GUI.skin = guiSKin;
if (showWeaponMenu)
{
GUI.Box(new Rect(Screen.width / 2 - 300, Screen.height / 2 - 200, 600, 400), "", GUI.skin.GetStyle("window"));
GUI.Box(new Rect(Screen.width / 2 - 512, Screen.height / 2 - 200, 212, 400), "", GUI.skin.GetStyle("label"));
//Список оружия
if (_TypeWeaponSelect != null)
{
for (int i = 0; _TypeWeaponSelect.Count > i; i++)
{
if (GUI.Button(new Rect(Screen.width / 2 - 480, Screen.height / 2 - 180 + (i * 20), 150, 15), _TypeWeaponSelect[i].WeaponName))
{
_Id = _TypeWeaponSelect[i].WeaponId;
weapString = _TypeWeaponSelect[i].stringTWS;
}
}
}
//Выбор оружия
if (_Id != 0)
{
if (CountWeapon != 0)
{
if (GUI.Button(new Rect(Screen.width / 2 + 140, Screen.height / 2 + 155, 150, 35), "Выбрать"))
{
CountWeapon--;
SelectIdWeapon.Add(_Id);
//SelectWeap.Add(weapString);
//weapString = ("");
_Id = 0;
for (int G = 0; SelectIdWeapon.Count >= G; G++)
{
PlayerPrefs.SetInt(weapString, SelectIdWeapon[G]);
Debug.Log("Запись id выбранного оружия" + G.ToString() + " id" + SelectIdWeapon[G].ToString());
}
}
}
else if (PlayerPrefs.GetInt("weap1") != 0)
{
GUI.Label(new Rect(250, 50, 150, 50), "Места нету");
if (GUI.Button(new Rect(150, 10, 150, 50), "Закончить выбор"))
{
}
}
}
}
}
}
[Serializable]
public class TypeWeaponSelectNew
{
public int WeaponId; //Айди оружия.
public string stringTWS;
public string WeaponName; //Имя оружия.
public string SpeedFire; //Скорострельность.
public string AmmoCount; //кол-во патронов.
}