using System.Collections; using System.Collections.Generic; using UnityEngine; public class gukeyaoqiu : MonoBehaviour { Dictionary<string, int> customerRequirements = new Dictionary<string, int>() { {"luohanguo",1 }, {"gancao",1 }, {"xiakucao",1 }, {"sangye",1 }, {"juhua",1 }, }; List<string>itemsInContact = new List<string>(); List<string> keysToRemove = new List<string>(); private bool isnone ; void Start() { } void Update() { if (customerRequirements.Count == 0&&isnone==false) { Debug.Log("100!"); isnone = true; } } private void OnTriggerEnter2D(Collider2D other) { string itemName = other.gameObject.name; if(!itemsInContact.Contains(itemName)) { itemsInContact.Add(itemName); } foreach (var kvp in customerRequirements) { if(itemsInContact.Contains(kvp.Key)) { int count = customerRequirements[kvp.Key]; if (count > 0) { customerRequirements[kvp.Key] -= 1; Destroy(other.gameObject); if (customerRequirements[kvp.Key] == 0) { keysToRemove.Add(kvp.Key); } } } } foreach (var key in keysToRemove) { customerRequirements.Remove(key); } } }
时间: 2024-02-10 07:14:18 浏览: 58
Simple WWW http.rar
这段代码是一个Unity脚本,用于管理一个关卡中的某个游戏对象与其他游戏对象的碰撞检测。具体来说,这个脚本实现了以下功能:
1. 定义了一个Dictionary类型的customerRequirements变量,用于保存客户的需求,其中键为物品名称,值为物品数量。
2. 定义了一个List类型的itemsInContact变量,用于保存当前与本游戏对象碰撞的游戏对象名称。
3. 定义了一个List类型的keysToRemove变量,用于保存已经满足客户需求的物品名称。
4. 在Start()函数中,没有任何操作。
5. 在Update()函数中,判断是否已经满足所有客户需求,如果是,则输出"100!"。
6. 在OnTriggerEnter2D(Collider2D other)函数中,判断当前与本游戏对象碰撞的游戏对象是否为客户所需物品,如果是,则将该物品从场景中移除,并将客户需求中对应物品数量减1。如果某个物品的数量已经减到0,则将其从customerRequirements中移除。
总体来说,这段代码实现了一个简单的游戏机制,玩家需要将特定的物品送给客户以完成任务。
阅读全文