如何用三元运算符实现Unity动画Float值的同一触发器开关控制
解决同一触发器切换动画Bool值的问题
你的代码问题出在SetBool是无返回值的void方法,没法把它的调用结果赋值给变量TiltingL,而且逻辑上也没必要这么写。要实现同一触发器切换动画状态,核心是先反转TiltL的布尔值,再把新状态传给动画控制器。
正确写法(两种方式)
- 分步清晰版:
// 先反转状态 TiltL = !TiltL; // 把新状态传给动画控制器 player.camera.camAnim.SetBool("TiltL", TiltL);
- 用三元运算符简化版(本质是利用赋值表达式的返回值):
player.camera.camAnim.SetBool("TiltL", TiltL = TiltL ? false : true); // 更简洁的等价写法 player.camera.camAnim.SetBool("TiltL", TiltL = !TiltL);
原代码的问题点
SetBool("TiltL", true)和SetBool("TiltL", false)都是执行动作的void方法,没有返回值,所以不能用它们作为三元运算符的结果去赋值给变量。你需要的是先切换状态变量,再把变量值传给SetBool。
内容的提问来源于stack exchange,提问作者JaysonJean Channel
相关产品推荐
相关产品推荐

