unity2022.1.8之后版本的新的输入行为控制对象变化

unity2022.1.8之后版本的新的输入行为控制对象变化

我们先了解大概的逻辑。我们要设置触发行为的方式并且让他和对象的行为绑定,再将行为和对象绑定,最后再绑定对应对象的行为函数里的函数方法,实现我们要的通过触发来控制对象变化。

请添加图片描述

在那之前,我们要先导入对应的包。

怎么导入?

先在系统设置里去启动新的输入方式。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o4PuoTEI-1676079644524)(C:/Users/86188/AppData/Roaming/Typora/typora-user-images/image-20230210093710374.png)]

然后会有提醒,让我们重启。

去仓库里把对应新版本的包下载下来。
在这里插入图片描述

然后就可以使用了。

如何使用?

  • 创建行为和对应触发方式

在任意文件夹下右键 >create>Input Actions 创建对应的绑定文件。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MH4iT0Zm-1676079644527)(C:/Users/86188/AppData/Roaming/Typora/typora-user-images/image-20230210101815002.png)]

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这样frog对象的行为我们就设置好了,接下来就只需要让他和我们的图中对象进行绑定就好了。

  • 将刚才行为的触发方式和对象绑定。
    在这里插入图片描述

  • 创建对应的反应函数:
    在这里插入图片描述

  • 把做出的变化绑定到对象上

在这里插入图片描述

我们编辑下具体要做出的动作:在按下跳跃键后输出台会输出 “起跳!!!!!”。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;

public class PlayController : MonoBehaviour
{
   public void jump()
   {
    Debug.Log("起跳!!!!!");
   }
}

我们再把它和行为绑定。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C92xhbAn-1676079644532)(C:/Users/86188/AppData/Roaming/Typora/typora-user-images/image-20230210145516419.png)]

这样,我们就可以看到 "起跳!!!!!"被执行了。恭喜你,已经学会了如何去将触发和人物的变化进行绑定。
在这里插入图片描述

之后是DLC,记录了一个小问题。

DLC : 结果被执行了两次

"起跳!!!!!"被执行了,但被执行了两次。

为什么呢?

我们再加入一个回调参数,帮助我们观察这之中究竟发生了什么。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;

public class PlayController : MonoBehaviour
{
   public void jump(InputAction.CallbackContext context)//这里加入回调参数
   {
    Debug.Log("起跳!!!!!" + context);
   }
}

之后需要重新选择下函数。

在这里插入图片描述

我们看下结果:

在这里插入图片描述

可以发现如果我们不刻意规定,它默认是在 开始阶段达到操作要求阶段 都会执行我们要的操作,这显然是不合理的。

我们加个 if 规范下它。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;

public class PlayController : MonoBehaviour
{
   public void jump(InputAction.CallbackContext context)
   {
      //TODO:这个todo是标记我们要在这个函数里做什么,除此之外没什么蛋用。

      //如果玩家已经达到操作触发要求,那么打印 “起跳!!!!!”
      if(context.phase == InputActionPhase.Performed) Debug.Log("起跳!!!!!" + context);

   }
}

可以发现这样的话,就只打印了一次。

在这里插入图片描述

问题圆满解决!!! 撒花!!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值