c# - 一种方法中的堆栈对象似乎与 UNITY 中的另一种方法不同?
问题描述
我有一段这样的代码。问题是 push 和 pop 不能一起工作。实际上,我认为 push 方法运行良好,但 pop 存在问题。因为当对象触发stack.count增加1但点击画布中的按钮时,控制台打印“堆栈为空”并且stack.count = 0。这里有什么问题?
Stack<Skill> stackSkills;
void Start()
{
stackSkills= new Stack<Skill>();
}
void OnTriggerEnter(Collider collider){
stackSkills.Push(newSkill);
Debug.Log(stackSkills.Count); //When i trigger it , it increases.
}
public void OnClick(){
Debug.Log("clicked");
Debug.Log(stackSkills.Count);
stackSkills.Pop();
}
}
这是示例:输出
1
2
3
clicked
0
InvalidOperationException: Stack empty.
System.Collections.Generic.Stack1[T].ThrowForEmptyStack () (at <ef151b6abb5d474cb2c1cb8906a8b5a4>:0)
解决方案
发生此问题的原因是在不同的两个游戏对象(Canvas 和 myGameObject)中使用了相同的脚本,它们没有相互关联。我OnTriggerEnter()
在 myGameObject 中调用方法,OnClick()
在 Canvas 中调用方法。因此它们不共享相同的数据字段。项目中有两个 Stack。
推荐阅读
- amazon-web-services - IAM 角色是否默认有权访问资源,哪个根账户有权访问?
- python - Python中的函数内部无法访问对象
- css - 内联样式是否会影响反应应用程序加载时间(FCP、LCP)?
- firebase - NoSuchMethodError:类'列表
- django - 表中的 Django 数据未显示
- python - 如何在不重叠的情况下填充行之间的空格?
- bash - 杀死终端后是否可以执行bashscript?
- java - 如何使用密码处理生物特征?
- flutter - 无法创建 org.gradle.invocation.DefaultGradle 类型的实例
- java - 错误:无法找到或加载主类 AffineCipher