var obj in imageTargetName.Where(obj => !imageTargetDic.ContainsKey(obj.Key))
时间: 2023-11-27 08:05:39 浏览: 57
这是一个使用LINQ查询语法的代码片段。假设`imageTargetName`是一个集合,`imageTargetDic`是一个字典,你想从`imageTargetName`中找出那些在`imageTargetDic`中不存在键的对象。
代码中的`var obj in imageTargetName`是一个迭代器,用于遍历`imageTargetName`集合中的每个元素。然后,通过`Where`方法结合Lambda表达式进行筛选,判断条件为在`imageTargetDic`中不包含当前元素的键。
最终,该代码返回一个新的集合,其中包含满足筛选条件的元素。
相关问题
void Start() { content = GameObject.Find("Canvas/Inventory/Viewport/Content"); UIBind.BindClick(btn_pickup, OnClickPickUp); } void OnClickPickUp() { Sprite sprite = sprites[Random.Range(0,sprites.Length)]; if (itemsDic.ContainsKey(sprite.name)) { itemsDic[sprite.name]++; objsDic[sprite.name].transform.Find("num").GetComponent<Text>().text = "x" + itemsDic[sprite.name].ToString(); } else { itemsDic.Add(sprite.name, 1); GameObject obj = Instantiate(item, content.transform); Image image = obj.transform.Find("slot").GetComponent<Image>(); image.sprite = sprite; Text text = obj.transform.Find("num").GetComponent<Text>(); text.text = "x" + itemsDic[sprite.name].ToString(); ; obj.GetComponentInChildren<Button>().onClick.AddListener(delegate() { OnClickUse(obj, sprite.name, text); }); objsDic.Add(sprite.name, obj); } }
看起来你的代码是尝试在点击按钮时将一个物品添加到物品栏中。在 OnClickPickUp() 函数中,你首先从 sprites 数组中随机选择一个 sprite,然后检查 itemsDic 字典中是否已经存在该 sprite,如果是则增加数量,否则新建一个物品槽,并将其加入到 content 中。在新建物品槽时,你设置了其图像为选定的 sprite,数量为1,并添加了一个 OnClickUse() 函数的监听器。
但是在这段代码中,我们看不出具体的 NullReferenceException 错误。你能否提供更多的信息,比如错误堆栈以及哪一行代码抛出了异常?这样才能更准确地找出问题所在。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Inventory : MonoBehaviour { public Button btn_pickup; public GameObject item; public Sprite[] sprites; private GameObject content; private Dictionary<string, int> itemsDic = new Dictinonary<string, int>(); private Dictionary<string, GameObject> objsDic = new Dictionary<string, GameObect>(); void Start() { content = GameObject.Find("Canvas/Inventory/Viewport/Content"); UIBind.BindClick(btn_pickup,OnClickPickUp); } void OnClickPickUp() { sprites sprite = sprites[Random.Range(0.sprites.Length)]; if (itemsDic.ContainsKey(sprite.name)) { itemsDic[sprite.name]++; objsDic[sprite.name].transform.Find("num").GetComponent<Text>().text = "x" + itemsDic[sprite.name].ToString(); } else { itemsDic.Add(sprite.name, 1); GameObject obj = Instantiate(item, content.transform); Image image = obj.transform.Find("slot").GetComponent<Image>(); image.sprite = sprite; Text text = obj.transform.Find("num").GetComponent<Text>(); text.text = "x" + itemsDic[sprite.name].ToString(); obj.GetComponentInChildren<Button>().onClick.AddListener(delegate)() { OnClickUse(obj, sprite.name, text); }); objsDic.Add(sprite.name, obj); } } void OnClickUse(GanmeObject obj,string name,Text text) { itemsDic[name]--; if (itemsDic[name]) ; { itemsDic.Remove(name); objsDic.Remove(name); Destroy(obj); } else { text.text = "x" + itemsDic[sprites.name].ToStromg(); } } }
这是一个Unity游戏中的物品系统脚本,其中Inventory类用于管理玩家的背包,包括添加物品、使用物品和删除物品等功能。其中包含了一些变量和函数,例如btn_pickup按钮、item物品预制体、sprites物品图片数组、itemsDic物品字典、objsDic物品对象字典等,以及OnClickPickUp()、OnClickUse()等函数来处理玩家点击按钮或物品时的逻辑操作。
阅读全文