【发布时间】:2022-10-18 23:17:08
【问题描述】:
只是在此处创建此帖子,因为我在 Unity 论坛中没有得到任何回复。
我无法让这个脚本在状态机中工作。 我想让一层不活动,我想改变一个动画参数。 问题是 whis 脚本没有编译。 关于如何做到这一点的任何线索?
public class SnorHelmetRemove : StateMachineBehaviour
{
protected GameObject headParent;
protected Animator animator;
protected bool checkHelmet;
private void OnEnable() {
animator = GameObject.GetComponent<Animator>();
bool checkHelmet = animator.GetBool("IsWearingHelmet");
headParent = GameObject.Find("HeadParent");
}
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
Debug.Log("Helmet is " + checkHelmet);
headParent.SetActive(false);
}
override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
if (checkHelmet) {
Debug.Log("Helmet is " + checkHelmet);
animator.SetBool("IsWearingHelmet",false);
} else {
Debug.Log("Helmet is " + checkHelmet);
animator.SetBool("IsWearingHelmet",true);
}
}
}
我在尝试编译时收到的错误在这一行 animator = GameObject.GetComponent<Animator>();
错误消息是这样的:
非静态字段、方法或对象需要对象引用 属性 GameObject.GetComponent();
我遵循了 Unity 指南https://docs.unity3d.com/2022.2/Documentation/ScriptReference/Animator.GetBool.html 并且 getObject 类是小写的,但是如果我更改它仍然无法工作,并且我有这个错误:
当前上下文中不存在名称“gameObject”
有谁能够帮我?
【问题讨论】:
-
脚本未编译。什么是编译错误以及在哪一行。请edit您的问题包括这些详细信息