Unity中kebab数组按钮切换后值重置,需实现持久化并显示于UI
问题修复方案
核心问题与修复点
- 肉类分类赋值错误:原代码中
miesoMieszane、miesoKurczak、miesoWolowina三个方法均错误地将kebab[1]赋值为"grube",属于复制粘贴导致的bug,需替换为对应肉类名称。 - 未实时更新UI:每个按钮点击修改数组后,没有调用
WyswietlKebabUI()方法,导致UI无法同步显示最新选择结果。
修复后的完整代码
using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; public class KebabMakerPanel : MonoBehaviour { [SerializeField] TextMeshProUGUI zamowienie; // 初始化数组为默认选项 public string[] kebab = { "ciasto", "mięso", "sos", "rozmiar" }; #region ciasto public void cienkie() { kebab[0] = "cienkie"; WyswietlKebabUI(); // 更新UI } public void grube() { kebab[0] = "grube"; WyswietlKebabUI(); // 更新UI } #endregion #region mieso public void miesoMieszane() { kebab[1] = "mieszane"; // 修复赋值错误 WyswietlKebabUI(); // 更新UI } public void miesoKurczak() { kebab[1] = "kurczak"; // 修复赋值错误 WyswietlKebabUI(); // 更新UI } public void miesoWolowina() { kebab[1] = "wolowina"; // 修复赋值错误 WyswietlKebabUI(); // 更新UI } #endregion #region sos public void sosMieszany() { kebab[2] = "mieszany"; WyswietlKebabUI(); // 更新UI } public void sosOstry() { kebab[2] = "ostry"; WyswietlKebabUI(); // 更新UI } public void sosLagodny() { kebab[2] = "lagodny"; WyswietlKebabUI(); // 更新UI } #endregion #region rozmiar public void rozmiarMaly() { kebab[3] = "maly"; WyswietlKebabUI(); // 更新UI } public void rozmiarSredni() { kebab[3] = "sredni"; WyswietlKebabUI(); // 更新UI } public void rozmiarDuzy() { kebab[3] = "duzy"; WyswietlKebabUI(); // 更新UI } #endregion #region zamowienie public void WyswietlKebabUI() { string tekst = "Kebab:\n"; foreach (var item in kebab) { tekst += item + "\n"; } zamowienie.text = tekst; } #endregion }
额外优化建议
如果想减少重复代码,可使用通用方法处理所有按钮点击,通过参数传递指定分类索引和选中值:
// 通用选择方法 public void SelectOption(int categoryIndex, string selectedValue) { if (categoryIndex >= 0 && categoryIndex < kebab.Length) { kebab[categoryIndex] = selectedValue; WyswietlKebabUI(); } }
之后在Unity编辑器中给每个按钮绑定该方法,通过参数传递设置对应索引和值:
- Ciasto分类按钮:索引0,值
"cienkie"/"grube" - Mieso分类按钮:索引1,值
"mieszane"/"kurczak"/"wolowina" - Sos分类按钮:索引2,值
"mieszany"/"ostry"/"lagodny" - Rozmiar分类按钮:索引3,值
"maly"/"sredni"/"duzy"
这种方式能大幅减少代码冗余,降低后续维护成本。
内容的提问来源于stack exchange,提问作者olioxpl
相关产品推荐
相关产品推荐

