I am having an issue with setting a private variable. I have a PubSub pushing data into a function that sets the variable. Inside my update function, I'm activating a method that is supposed to make a button on the screen clickable. The issue is the private variable never changes and remains false. I can't understand why my variable isn't being set correctly. Thank you for helping.
using System.Collections;
using Assets.Scripts.Schemas;
using Michsky.UI.ModernUIPack;
using SuperMaxim.Messaging;
using System.Collections.Generic;
using TMPro;
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
using Button = UnityEngine.UI.Button;
namespace Assets.Scripts.Views
{
class LeagueSummonerVerificationView : MonoBehaviour
{
[HideInInspector] private static TMP_InputField _leagueSummonerNameInput;
[HideInInspector] private static CustomDropdown _leagueRegionSelectDropdown;
[HideInInspector] private GameObject _verifyLeagueSummonerButton;
private bool _leagueButtonActivate;
void Awake()
{
_leagueSummonerNameInput = GameObject.Find("Summoner_Name").GetComponent<TMP_InputField>();
_leagueRegionSelectDropdown = GameObject.Find("Region_Select").GetComponent<CustomDropdown>();
_verifyLeagueSummonerButton = GameObject.Find("Submit_Button");
_verifyLeagueSummonerButton.GetComponent<Button>().onClick.AddListener(LeagueVerifySummonerButtonOnClick);
_leagueSummonerNameInput.onValueChanged.AddListener(delegate { LeagueSummonerNameOnChange(); });
Messenger.Default.Subscribe<LeagueRegionSchema>(SetupLeagueRegionSelectDropdown);
Messenger.Default.Subscribe<SummonerNamePassCheck>(SetLeagueButtonActivated);
_verifyLeagueSummonerButton.GetComponent<Button>().interactable = _leagueButtonActivate;
}
void Update()
{
ActivateLeagueButtonActivated();
}
#region Setup League Region Select Dropdown
private static void SetupLeagueRegionSelectDropdown(LeagueRegionSchema payload)
{
List<CustomDropdown.Item> leagueDropdownItem = new List<CustomDropdown.Item>();
for (int i = 0; i < payload.leagueRegions.Count; i++)
{
var item = new CustomDropdown.Item();
item.itemName = payload.leagueRegions[i].ToString();
item.itemIcon = null;
leagueDropdownItem.Add(item);
}
_leagueRegionSelectDropdown.dropdownItems = leagueDropdownItem;
}
#endregion
#region Toggle LeagueSummonerButton
void SetLeagueButtonActivated(SummonerNamePassCheck payload)
{
_leagueButtonActivate = payload.summonerNameSafe;
}
#endregion
void ActivateLeagueButtonActivated()
{
if (_leagueButtonActivate)
{
_verifyLeagueSummonerButton.GetComponent<Button>().interactable = true;
}
}
#region League Verify Summoner Button On Click
private static void LeagueVerifySummonerButtonOnClick()
{
var payload = new LeagueVerificationSchema
{
region = _leagueRegionSelectDropdown.dropdownItems[_leagueRegionSelectDropdown.selectedItemIndex].itemName,
summonerName = _leagueSummonerNameInput.text,
buttonClicked = true
};
Messenger.Default.Publish(payload);
}
#endregion
#region League Summoner Name Entered
private static void LeagueSummonerNameOnChange()
{
var payload = new LeagueVerificationSchema
{
summonerName = _leagueSummonerNameInput.text,
};
Messenger.Default.Publish(payload);
}
#endregion
}
}
question from:
https://stackoverflow.com/questions/65924632/unity-c-sharp-internal-variable-not-being-set-correctly 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…