В настоящее время я работаю над игрой, и я пытаюсь создать систему слотов с 3 кнопками и буфером с 7 кнопками. То, что я хочу сделать, - это каждый раз, когда щелкают кнопку слота buff, он откроет панель магазина buff, и когда пользователь нажмет на один из 7 баффов на панели, изображение кнопки buff переместится в кнопку слота buff.Button называет себя много раз
Я реализовал практически все, поэтому, когда я щелкаю первый слот для баффа и выбираю бафф, изображение слота buff изменится на выбранный buff. Но когда я нажимаю на второй слот buff и выбираю еще один бафф, он заменяет изображение на обеих кнопках. И тогда третий будет делать то же самое для всех 3 кнопок. Почти как рекурсивно называть себя, когда я нажимаю на другие кнопки. Как я могу избежать кнопок от изменения изображений других кнопок? Я довольно новичок в Unity/C#, и я был бы признателен за любое предложение, которое я могу получить.
EDIT: Извините! Я полностью забыл даже опубликовать код. Это моя ошибка! Вот то, что я до сих пор:
//This is where I initialize the buttons under Start()
buffSlot_1.GetComponent<Button>();
buffSlot_1.onClick.AddListener(() => addBuff(buffSlot_1));
buffSlot_2.GetComponent<Button>();
buffSlot_2.onClick.AddListener(() => addBuff(buffSlot_2));
buffSlot_3.GetComponent<Button>();
buffSlot_3.onClick.AddListener(() => addBuff(buffSlot_3));
Это то, что делает метод:
void addBuff(Button button) {
buffPanel.GetComponent<GameObject>();
buffPanel.SetActive(true);
damageBoostButton.GetComponent<Button>();
damageBoostButton.onClick.AddListener(() => {
Debug.Log("Gain a damage boost!");
dmgBool = true;
buffPanel.SetActive(false);
button.interactable = false;
damageBoostButton.interactable = false;
button.image.overrideSprite = damageBoostButton.image.sprite;
});
defenseBoostButton.GetComponent<Button>();
defenseBoostButton.onClick.AddListener(() => {
Debug.Log("Gain a defense boost!");
defBool = true;
buffPanel.SetActive(false);
button.interactable = false;
defenseBoostButton.interactable = false;
button.image.overrideSprite = defenseBoostButton.image.sprite;
});
critBoostButton.GetComponent<Button>();
critBoostButton.onClick.AddListener(() => {
Debug.Log("Crit Boost");
critBool = true;
buffPanel.SetActive(false);
button.interactable = false;
critBoostButton.interactable = false;
button.image.overrideSprite = critBoostButton.image.sprite;
});
hasteBoostButton.GetComponent<Button>();
hasteBoostButton.onClick.AddListener(() => {
Debug.Log("Haste Boost");
hasteBool = true;
buffPanel.SetActive(false);
button.interactable = false;
hasteBoostButton.interactable = false;
button.image.overrideSprite = hasteBoostButton.image.sprite;
});
iceSpikeButton.GetComponent<Button>();
iceSpikeButton.onClick.AddListener(() => {
Debug.Log("Increase Ice Spike");
iceSpikeBool = true;
buffPanel.SetActive(false);
button.interactable = false;
iceSpikeButton.interactable = false;
button.image.overrideSprite = iceSpikeButton.image.sprite;
});
iceWallButton.GetComponent<Button>();
iceWallButton.onClick.AddListener(() => {
Debug.Log("Increase Ice Wall");
iceWallBool = true;
buffPanel.SetActive(false);
button.interactable = false;
iceWallButton.interactable = false;
button.image.overrideSprite = iceWallButton.image.sprite;
});
healthRegenButton.GetComponent<Button>();
healthRegenButton.onClick.AddListener(() => {
Debug.Log("HPRegen Boost");
hpRegenBool = true;
buffPanel.SetActive(false);
button.interactable = false;
healthRegenButton.interactable = false;
// button.image.overrideSprite = healthRegenButton.image.sprite;
});
}
Спасибо!
нет кода, никто не знает – BWA
Так вы спрашиваете нас, где ваш код вызова данного метода, но вы отказываетесь, чтобы показать нам свой код. Я ставлю 10 долларов в строке 123, дайте мне знать, если я выиграю пул. –
Пожалуйста, прочитайте страницу [Как спросить] (http://stackoverflow.com/help/how-to-ask), в частности это предложение: «Включите достаточно кода, чтобы другие могли воспроизвести проблему. прочитайте [Как создать минимальный, полный и проверенный пример.] (http://stackoverflow.com/help/mcve) " – Quantic