如何做淘客网站,网站开发笔记本,免费申请空间网站,德兴网站建设公司Unity中Stack用法以及删除Stack的方法 介绍StackT的APIStackT 常用方法创建和初始化 StackTPush 和 Pop 操作StackT遍历清空栈检查栈是否包含某个元素 栈的典型应用场景撤销操作深度优先搜索#xff08;DFS#xff09;注意事项 总结 介绍
因… Unity中Stack用法以及删除Stack的方法 介绍StackT的APIStackT 常用方法创建和初始化 StackTPush 和 Pop 操作StackT遍历清空栈检查栈是否包含某个元素 栈的典型应用场景撤销操作深度优先搜索DFS注意事项 总结 介绍
因为之前很少使用Stack这个表然后在做对象池的时候用了一下然后发现我的对象有时候无法删除然后这里我分享一下Stack的用法和删除方式。
Stack的API
Stack是先进后厨的集合类在System.Collections.Generic命名空间中 通常用在临时存储和特定顺序处理数据比如撤销操作、递归算法、深度优先搜索等。
Stack 常用方法
Push(T item)将元素添加到栈顶。 Pop()移除并返回栈顶的元素。 Peek()返回栈顶的元素但不移除它。 Clear()清空栈中的所有元素。 Count获取栈中元素的数量。 Contains(T item)检查栈中是否包含某个元素。
创建和初始化 Stack
// 创建一个 StackTT 是泛型类型比如 int、string 或自定义类
Stackint stack new Stackint();// 添加元素到栈中
stack.Push(10);
stack.Push(20);
stack.Push(30);// 输出栈中的元素数量
Debug.LogError(栈中元素数量: stack.Count); // 输出: 3Push 和 Pop 操作
Push将元素添加到栈顶 Pop移除并返回栈顶的元素如果栈为空会抛出异常
Stackstring stack new Stackstring();// 添加元素
stack.Push(Apple);
stack.Push(Banana);
stack.Push(Cherry);// 移除并返回栈顶元素
string topItem stack.Pop();
Debug.LogError(移除的元素: topItem); // 输出: Cherry// 查看栈顶元素不移除
string peekItem stack.Peek();
Debug.LogError(栈顶元素: peekItem); // 输出: BananaStack遍历
Stackint stack new Stackint();
stack.Push(1);
stack.Push(2);
stack.Push(3);// 遍历栈
foreach (int item in stack)
{Debug.LogError(item); // 输出顺序: 3, 2, 1
}清空栈
使用 Clear() 方法可以清空栈中的所有元素。
stack.Clear();
Debug.LogError(栈中元素数量: stack.Count); // 输出: 0注意这里如果你T是GameObject对象的话需要额外的操作
StackGameObject noteStack new StackGameObject();
while (noteStack.Count 0)
{GameObject note noteStack.Pop();//是 GameObjectDestroy(note);
}
stack.Clear();
Debug.LogError(栈中元素数量: stack.Count); // 输出: 0检查栈是否包含某个元素
使用 Contains(T item) 方法可以检查栈中是否包含某个元素。
Stackstring stack new Stackstring();
stack.Push(Apple);
stack.Push(Banana);bool containsBanana stack.Contains(Banana);
Debug.LogError(栈中是否包含 Banana: containsBanana); // 输出: True栈的典型应用场景
撤销操作
Stackstring actionStack new Stackstring();// 用户执行操作
actionStack.Push(Typed Hello);
actionStack.Push(Deleted Hello);// 撤销操作
string lastAction actionStack.Pop();
Debug.LogError(撤销的操作: lastAction); // 输出: Deleted Hello深度优先搜索DFS
Stackint dfsStack new Stackint();
dfsStack.Push(1); // 起始节点while (dfsStack.Count 0)
{int currentNode dfsStack.Pop();Debug.LogError(访问节点: currentNode);// 假设 currentNode 有子节点 2 和 3dfsStack.Push(3);dfsStack.Push(2);
}注意事项
空栈异常 如果栈为空时调用 Pop() 或 Peek()会抛出 InvalidOperationException。因此在使用这些方法前最好检查栈是否为空。
if (stack.Count 0)
{int item stack.Pop();
}性能 Stack 的 Push 和 Pop 操作的时间复杂度为 O(1)非常适合需要快速添加和移除元素的场景
总结
感谢大家的支持