惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News | PayPal Newsroom
H
Hackread – Cybersecurity News, Data Breaches, AI and More
雷峰网
雷峰网
NISL@THU
NISL@THU
V
Vulnerabilities – Threatpost
P
Privacy International News Feed
博客园_首页
P
Privacy & Cybersecurity Law Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
Know Your Adversary
Know Your Adversary
小众软件
小众软件
人人都是产品经理
人人都是产品经理
WordPress大学
WordPress大学
博客园 - 聂微东
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
Tor Project blog
C
Cybersecurity and Infrastructure Security Agency CISA
V
V2EX
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
J
Java Code Geeks
M
MIT News - Artificial intelligence
PCI Perspectives
PCI Perspectives
T
The Blog of Author Tim Ferriss
美团技术团队
Jina AI
Jina AI
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 最新话题
Cloudbric
Cloudbric
Webroot Blog
Webroot Blog
V2EX - 技术
V2EX - 技术
爱范儿
爱范儿
S
Securelist
MyScale Blog
MyScale Blog
B
Blog
AI
AI
L
LINUX DO - 热门话题
Security Archives - TechRepublic
Security Archives - TechRepublic
The Register - Security
The Register - Security
I
Intezer
有赞技术团队
有赞技术团队
Google Online Security Blog
Google Online Security Blog
云风的 BLOG
云风的 BLOG
H
Help Net Security
D
DataBreaches.Net
K
Kaspersky official blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
The Last Watchdog
The Last Watchdog
Attack and Defense Labs
Attack and Defense Labs
酷 壳 – CoolShell
酷 壳 – CoolShell

博客园 - Bo Schwarzstein

发布关于PostGIS对于USD格式的拓展 紫微斗数之自化禄真的是损耗嘛? 紫微斗数个人经验之三合或者四化看哪个 A Practical Methodology, HSM, Handler,Service,Model, for Golang Backend Development 问ChatGPT玄学问题,看来命理师还是不会被取代的 Compile Sqlite3 Executable, Static Library, and Shared Library on Linux Benchmark JuiceFS at AWS 2 Benchmark JuiceFS on AWS 1 Work with AWS VPC, Lambda and Internet Far & Unifield Field Augmented Reality 紫微斗数是否对外国人有用 Create CloudFront Signed URL in 1 Minute 2022壬寅年天干四化 《中有成就秘笈》之中央密严刹土 IPFS与般若文海 Moira果老星宗七政四余排盘软件下载 Play Old Diablo 2 on macOS Catalina Use Go Micro Web with HTTP Handler 视频平台设计思路大灌顶
Unity Input System教程
Bo Schwarzstein · 2020-05-22 · via 博客园 - Bo Schwarzstein

针对版本2018.4 LTS与Input System 0.2.1。


Unity看起来有两套负责处理用户输入的系统,一套是Input Manager,另外一套是一直在维护与开发的Input System,现在的版本是1.0。但是如果倘若跟我一样需要修改老的Unity工程,很有可能还是用了老版本的Input System。本文给Unity初学者展示如何使用Input System处理外部按键输入,进而处理游戏逻辑。

首先点击编辑器菜单Window下Package Manager,确认Input System已经安装。这里使用的是老版本的0.2.1,从Unity网站上直接下载即可。

接下来解释如何定义按键。

当使用了Input System之后,在Project工程目录内的某个文件夹内点击鼠标右键,可以看到我们可以创建一个Input System。

而后输入一个名字,我们的一个输入系统就创建好了。

这里需要解释一下,一个游戏可以有多个输入系统。每一个输入系统只是定义了ActionMap和按键的映射,和游戏本身逻辑无关,所以许多时候,如果游戏存在多个不同的场景,那么显然为了区分起见可以创建多个输入系统,这样游戏逻辑处理起来会简单,以及更有条理一些。

继续工作。在Inspector面板内,点击Edit asset,就开始定义ActionMap和按键的映射。

这里我们定义了一个WarriorConfig和MagicanConfig,分别对应了战士和魔法师的动作,这里对于战士,我们对应了两种攻击方式,普通攻击和快速攻击,按键是f和s。

 然后一定要点Save Asset,这样这个Unity Asset就存储了这一套规则。

点击Generate C# Class之后,填好生成的C#文件路径和类名,点击Apply,这样其C#文件就生成了。

 下面开始为游戏对象添加Script,假如场景里有个十字弓Crossbow的脚本文件,当我们要处理按键与十字弓动作的关系的时候,需要先定义好对应Input System的成员变量。范例代码如下。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Experimental.Input;

public class Crossbow : MonoBehaviour
{
    // Declare  the skill controls.
    [Space] [SerializeField] private SkillControls skilControls;

    void Update()
    {
    }
}

随后,回到Inspector,可以看到暴露出的成员

 可以直接从Project拖拽对应的Asset到成员。这里我定义了2套控制,可以看出这一套系统是可以很方便的实现对控制的解耦合。

下面用简单的代码演示如何在脚本中处理按键事件。

public class Crossbow : MonoBehaviour
{

    [Space] [SerializeField] private SkillControls skillControls;

    void Awake()
    {
        var normalAttack = skillControls.WarriorConfig.NormalAttack;
        normalAttack.Enable();

        normalAttack.performed += OnNormalAttack;
    }

    public void OnNormalAttachk(InputAction.CallbackContext ctx)
    {
        Debug.LogWarning("Normal Attack!");
    }
}

从Awake方法中可以直接获得所有定义的按键事件组合,然后把对应的处理函数交给performed以及cancelled处理。这样就完成了。

需要注意的是,这种方法需要先Enable对应的InputAction,否则不会工作。

是不是很简单?

posted on 2020-05-22 19:54  Bo Schwarzstein  阅读(2927)  评论()    收藏  举报