Unity中InventoryToggle脚本无法按标签分配预制体至列表以实现Toggle交互功能的问题求助
Unity中InventoryToggle脚本无法按标签分配预制体至列表以实现Toggle交互功能的问题求助
大家好,我是Unity新手,最近在做游戏的背包系统,卡在Toggle交互这一步了,想请各位大佬帮忙看看!
先说说我的背包系统逻辑:
- 背包左侧是一排Toggle,每个Toggle对应一个收集到的物品名称
- 选中某个Toggle后,右侧要显示对应物品的描述(之后还要加物品模型,逻辑和描述一致)
- 物品是通过与Scriptable Object(Item类)交互收集的,Item里存了物品名称、描述、专属标签这些信息
- 物品收集后,InventoryManager会把对应的Toggle和描述预制体加载到背包画布上,收集和加载这部分是正常的,问题出在Toggle的功能实现上
因为Toggle和物品描述都是预制体,所以我得通过脚本来设置Toggle的交互逻辑。我的核心想法是:
- 当选中某个物品Toggle时,隐藏所有其他物品的描述(以及之后要加的模型),只显示当前选中的那个
- 我已经把所有物品的标签整理到
itemTags数组里了,每个物品的SelectedTag是从Item数据里正确获取的字符串 - 计划把所有带当前
SelectedTag的预制体放到SelectedItem列表,其他标签的放到OtherItem列表,然后Toggle选中时激活SelectedItem、禁用OtherItem
但现在连列表的分配都没成功,我的AssignToggle方法好像没正确把物体加到列表里。下面是我的代码:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class InventoryToggle : MonoBehaviour { public Toggle toggle; [SerializeField] // 当前选中物品Toggle对应的所有预制体(物品描述、模型等) private List<GameObject> SelectedItem = new List<GameObject>(); [SerializeField] // 未选中物品Toggle对应的所有预制体(物品描述、模型等) private List<GameObject> OtherItem = new List<GameObject>(); // 所有物品的标签数组,每个物品都有自己的专属标签 public string[] itemTags = new string[] {"ItemTabletten","ItemPostkarte"}; // 本应将对应标签的预制体分配到对应列表的方法 public void AssignToggle(string Selectedtag) { GameObject[] selectedobjects = GameObject.FindGameObjectsWithTag(Selectedtag); SelectedItem.AddRange(selectedobjects); foreach (string s in itemTags) { if (s != Selectedtag) { GameObject[] otherobjects = GameObject.FindGameObjectsWithTag(s); OtherItem.AddRange(otherobjects); } } } }
有没有大佬能帮我找找问题出在哪?或者有没有更合适的实现思路?谢谢大家!
备注:内容来源于stack exchange,提问作者niemand geht
相关产品推荐
相关产品推荐

