还有一种与Invoke C# Events类似的C#事件的实现方式,可以省去物体上挂载的PlayerInput组件: 首先在InputAction的资源文件Inspector窗口中,勾选Generate C# Event选项,下面可配置生成的文件路径、类名、命名空间,这里取默认值,点击Apply,Unity编辑器会为我们对这个InputAction资源生成一份代码文件。 随后在脚本中使用生成的...
Send Message:逻辑脚本和PlayerInput在同一对象上时,通过Send Messages来执行相应函数;其中有提供的默认函数 OnDeviceLost(PlayerInput input):设备丢失(如设备没电) OnDeviceRegained(PlayerInput input):设备注册(设备从丢失中恢复也会执行) OnControlsChanged(PlayerInput input):控制器切换,如键盘和手柄都接入,默认设...
如果不喜欢PlayerInput组件,但依然想使用ActionAsset资源的话也是可以的,在此前创建好的ActionAsset资源的检视面板里勾选上Generate C# Class,选择路径,设置类名和命名空间后点击Apply即可自动生成一个脚本文件。 该脚本文件中包含了ActionAsset资源的所有信息并为其每一个ActionMap都配置了相应的接口和Wrapper类,这也就...
将GameActions文件赋给PlayerInput物体上的PlayerInput组件中的Actions属性和InputSystemUIInputModule组件中的ActionsAsset属性;将InputSystemUIInputModule组件自身赋给PlayerInput组件中的UIInputModule属性。 然后将PlayerInput组件中Default Map修改为Player,Camera设置为场景摄像机,Behavior修改为Invoke Unity Events。 到此为...
1.PlayerInput组件实现交互 Invoke Unity Events实现 Invoke C Sharp Events实现 2.C#脚本实现交互 CallbackContext 3.切换ActionMap 4.触摸屏交互 新的inputsystem较于老的inputsystem兼容性更强,也让我们不用再去关注输入的条件判断。所以还是值得学习一下。
在你的场景中准备一个胶囊体,然后为它添加一个C#脚本PlayerController(用于写一个简单的响应)和一个InputSystem专用的组件Player Input。 PlayerController中我们定义一个OnJump【名字随便取】函数内容如下, 然后保存。回到我们的Inspector。 将Player Input的Behavior改成Invoke Unity Events【这是UI的Button那样的调用方...
首先我们创建一个立方体Cube,然后为其添加一个 PlayerInput 组件。 添加好组件后,如果我们要接受到输入,还需要创建InputAction。我们可以点击组件上的Create Actions按钮来创建。点击后会弹出一个对话框,来选择存放生成的.inputactions文件路径。 我们可以定义这个.inputactions文件的名称,这里默认使用“NewInputProject”即...
点击Yes 启用新版 Input System 等待 Unity 重新启动。 Unity 默认会同时启用旧版和新版输入系统,你可以在Player settings中(Edit -> Project Settings -> Player ->Active Input Handling) 找到相应的设置。可以随时修改这里的设置,这样做依然会重启编辑器。
关于本地多人游戏的部分,前面提到过新的 Input System 让本地合作的实现变得很简单,只需要创建一个挂载了 player input manager 的游戏物体,再将 player 设置为预制体放入 input manager,按下不同控制器任意按钮后,就会自动生成玩家的预制体。 不过可以看到,这样会带来一个问题,生成出来的玩家无论是位置还是其它什...
关于本地多人游戏的部分,前面提到过新的 Input System 让本地合作的实现变得很简单,只需要创建一个挂载了 player input manager 的游戏物体,再将 player 设置为预制体放入 input manager,按下不同控制器任意按钮后,就会自动生成玩家的预制体。 不过可以看到,这样会带来一个问题,生成出来的玩家无论是位置还是其它什...