Unity/C#:如何在动画状态机中禁用组件
Posted
技术标签:
【中文标题】Unity/C#:如何在动画状态机中禁用组件【英文标题】:Unity/C#: How to disable component in animation state machine 【发布时间】:2021-10-12 09:17:06 【问题描述】:当动画状态机达到某个状态时,我正在尝试禁用 gameObject obj 上的 BoxCollider2D。我已经看遍了,没有运气。有什么帮助!
GameObject obj;
void OnStateEnter()
obj.GetComponent<BoxCollider2D>().enabled = false;
这就是我所拥有的,但我不断收到编译器错误。我对 Unity 和 C# 比较陌生(尽管我在 C 和 C++ 方面有扎实的背景)。
【问题讨论】:
请使用正确的标签!请注意,unityscript
是或更好的是曾经是一种 javascript 风格,类似于早期 Unity 版本中使用的自定义语言,并且现在已经不推荐使用了!如果您不使用该语言,请不要使用该标签。
【参考方案1】:
我对此没有太多经验,但我对此进行了一些研究。我认为问题可能是你的班级不是来自 StateMachineBehaviour。它可能仍然源自 Monobehaviour。看看这个文档。 https://docs.unity3d.com/ScriptReference/StateMachineBehaviour.html
如果不是,可能是因为 OnStateEnter 需要参数才能工作。该文档有一个示例,因此我建议您尝试一下,看看它是如何工作的。
PS:我认为如果您确切地提到您遇到的错误,它可能对社区更有帮助。编译器错误可能是因为其他原因。
【讨论】:
以上是关于Unity/C#:如何在动画状态机中禁用组件的主要内容,如果未能解决你的问题,请参考以下文章