Unity报错:Parameter 'isWalking'不存在,如何修复?
修复Unity中Animator参数“isWalking”不存在的报错
报错原因:你的代码调用了animator.SetBool("isWalking", verticalMove != 0 || horizontalMove != 0),但绑定到Player对象的**Animator Controller(动画控制器)**中,没有定义名为isWalking的布尔型参数。
修复步骤:
- 打开Unity编辑器顶部菜单栏的
Window > Animation > Animator,调出Animator窗口 - 在Animator窗口右上角点击
Parameters按钮,显示参数面板 - 点击参数面板的"+"按钮,选择
Bool类型,创建新参数 - 将新参数命名为isWalking(注意大小写必须和代码中的字符串完全一致,Unity参数名区分大小写)
- 检查Player对象的Animator组件,确认绑定的是你刚修改的Animator Controller,且Inspector面板中
animator变量已正确拖入赋值 - (可选)在动画状态机中设置基于
isWalking的过渡条件,比如Idle到Walk状态的过渡条件设为isWalking = true,Walk到Idle设为isWalking = false
额外优化建议:
为避免animator变量未赋值导致的额外报错,可以在代码中添加空值判断:
private void Move() { float horizontalMove = Input.GetAxis("Horizontal"); float verticalMove = Input.GetAxis("Vertical"); if (characterController.isGrounded) verticalSpeed = 0; else verticalSpeed -= gravity * Time.deltaTime; Vector3 gravityMove = new Vector3(0, verticalSpeed, 0); Vector3 move = transform.forward * verticalMove + transform.right * horizontalMove; characterController.Move(speed * Time.deltaTime * move + gravityMove * Time.deltaTime); // 添加空值判断 if(animator != null) { animator.SetBool("isWalking", verticalMove != 0 || horizontalMove != 0); } }
内容的提问来源于stack exchange,提问作者Federico Bosio
相关产品推荐
相关产品推荐

