1.创建一个游戏工程, 命名为InputControl
![](https://i-blog.csdnimg.cn/blog_migrate/af2a940a3fb618d036630c86bd591ea1.png)
2.在Project视图中创建3个文件夹, Scene文件夹、Resources文件夹和Script文件夹
![](https://i-blog.csdnimg.cn/blog_migrate/dd9c75da036f8c3e6685041a2a850ec2.png)
3.将当前场景保存为GameScene
![](https://i-blog.csdnimg.cn/blog_migrate/6098e55476464b080fe256c77e9cb8ab.png)
4.创建ComputerInputControl游戏脚本
![](https://i-blog.csdnimg.cn/blog_migrate/87d3d428f5b66652fe9ff906567f6fc0.png)
5.在Hierarchy视图中创建一个空的GameObject, 命名为GameManager,并把ComputerInputControl绑定在该对象上
![](https://i-blog.csdnimg.cn/blog_migrate/ce2286ef073f278222031718c03014ec.png)
6.玩家点击鼠标左键开火、按住键盘W键前进等都属于输入控制。输入控制是游戏开发中非常重要的一个环节。
7.计算机输入
(1).计算机设备的输入指的是仅对应键盘和鼠标的输入检测。一般单项检查分为3类:按下、按住和抬起。
(2).KeyCode是由Event.keyCode返回的, 用于键盘事件的原始键码。
![](https://i-blog.csdnimg.cn/blog_migrate/af2a940a3fb618d036630c86bd591ea1.png)
2.在Project视图中创建3个文件夹, Scene文件夹、Resources文件夹和Script文件夹
![](https://i-blog.csdnimg.cn/blog_migrate/dd9c75da036f8c3e6685041a2a850ec2.png)
3.将当前场景保存为GameScene
![](https://i-blog.csdnimg.cn/blog_migrate/6098e55476464b080fe256c77e9cb8ab.png)
4.创建ComputerInputControl游戏脚本
![](https://i-blog.csdnimg.cn/blog_migrate/87d3d428f5b66652fe9ff906567f6fc0.png)
5.在Hierarchy视图中创建一个空的GameObject, 命名为GameManager,并把ComputerInputControl绑定在该对象上
![](https://i-blog.csdnimg.cn/blog_migrate/ce2286ef073f278222031718c03014ec.png)
6.玩家点击鼠标左键开火、按住键盘W键前进等都属于输入控制。输入控制是游戏开发中非常重要的一个环节。
7.计算机输入
(1).计算机设备的输入指的是仅对应键盘和鼠标的输入检测。一般单项检查分为3类:按下、按住和抬起。
(2).KeyCode是由Event.keyCode返回的, 用于键盘事件的原始键码。
(3).代码清单
using UnityEngine;
public class ComputerInputControl : MonoBehaviour
{
void Update ()
{
if(Input.GetKeyDown(KeyCode.A))
{
Debug.Log ("按下键盘A键");
}
if(Input.GetKey(KeyCode.A))
{
Debug.Log ("按住键盘A键");
}
if(Input.GetKeyUp(KeyCode.A))
{
Debug.Log ("抬起键盘A键");
}
if(Input.GetKeyDown(KeyCode.Space))
{
Debug.Log ("按下键盘空格键");
}
if(Input.GetKey(KeyCode.Space))
{
Debug.Log ("按住键盘空格键");
}
if(Input.GetKeyUp(KeyCode.Space))
{
Debug.Log ("抬起键盘空格键");
}
if(Input.GetMouseButtonDown(0))
{
Debug.Log ("按下鼠标左键");
}
if(Input.GetMouseButton(0))
{
Debug.Log ("按住鼠标左键");
}
if(Input.GetMouseButtonUp(0))
{
Debug.Log ("抬起鼠标左键");
}
if(Input.GetMouseButtonDown(1))
{
Debug.Log ("按下鼠标右键");
}
if(Input.GetMouseButton(1))
{
Debug.Log ("按住鼠标右键");
}
if(Input.GetMouseButtonUp(1))
{
Debug.Log ("抬起鼠标右键");
}
if(Input.GetMouseButtonDown(2))
{
Debug.Log ("按下鼠标滚轮键");
}
if(Input.GetMouseButton(2))
{
Debug.Log ("按住鼠标滚轮键");
}
if(Input.GetMouseButtonUp(2))
{
Debug.Log ("抬起鼠标滚轮键");
}
}
}
8.自定义输入
(1).键盘鼠标输入检测十分局限, 一般仅用于计算机等设备。自定义输入可以设置输入类型名称、输入设备类型、输入键位等参数, 从而方便的解决了计算机与家用机的输入兼容。
(2).微软的xbox
(3).任天堂游戏公司的switch
(4).输入设置界面: 菜单栏 -> Edit -> Project Settings -> Input打开输入设置界面
(5).展开Horizontal输入项, 我们发现有2个Horizontal项, 这是因为键盘鼠标是单独的一套键,而手柄则是另一套。
(6).在Hierarchy视图中的GameManame游戏对象下,新建一个Cube立方体。
(7).新建一个HorizontalInput.cs脚本, 并绑定到Cube上。
(8).代码清单
using UnityEngine;
public class HorizontalInput : MonoBehaviour
{
void Update ()
{
float horizontalValue = Input.GetAxis ("Horizontal");
if(horizontalValue != 0)
{
transform.position += new Vector3 (horizontalValue*Time.deltaTime, 0, 0);
}
float verticalValue = Input.GetAxis ("Vertical");
if(verticalValue != 0)
{
transform.position += new Vector3 (0, verticalValue*Time.deltaTime, 0);
}
}
}