[英]Dictionary function for Character Controller
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Keyboard_Input : MonoBehaviour {
public float speed = 5f;
void Start () {
Dictionary<KeyCode, Vector3> directions = new Dictionary<KeyCode, Vector3>();
{
directions.Add(KeyCode.W, Vector3.forward );
directions.Add(KeyCode.S, Vector3.back );
directions.Add(KeyCode.A, Vector3.left );
directions.Add(KeyCode.D, Vector3.right );
};
}
void Update () {
foreach(KeyValuePair<KeyCode, Vector3> direction in directions)
{
if (Input.GetKey(directions))
{
this.transform.Translate(directions[direction] * speed * Time.deltaTime, Space.Self);
}
}
}
}
1.So I get an error for each time I write directions- The name 'directions' does not exist in the current context This happens on lines 25,27,30 1.所以每次写路线时都会出错—当前上下文中不存在“路线”名称,这发生在第25、27、30行
You're declaring directions
within the Start
method, so it's a local variable. 您在Start
方法中声明directions
,因此它是一个局部变量。 You should declare it as a field - and I'd make it a static field, as you don't need a different dictionary for each instance. 您应该将其声明为字段-并且我将其设置为静态字段,因为您无需为每个实例使用不同的字典。 You can use a collection initializer to initialize it all in one expression: 您可以使用集合初始化程序在一个表达式中将其全部初始化:
private static readonly Dictionary<KeyCode, Vector3> directions =
new Dictionary<KeyCode, Vector3>
{
{ KeyCode.W, Vector3.forward },
{ KeyCode.S, Vector3.back },
{ KeyCode.A, Vector3.left },
{ KeyCode.D, Vector3.right }
};
You use {}; 你用 {}; where you shouldn't do it in dictionary initialization. 在字典初始化中不应该这样做的地方。
void Start ()
{
Dictionary<KeyCode, Vector3> directions = new Dictionary<KeyCode, Vector3>();
directions.Add(KeyCode.W, Vector3.forward );
directions.Add(KeyCode.S, Vector3.back );
directions.Add(KeyCode.A, Vector3.left );
directions.Add(KeyCode.D, Vector3.right );
}
or you can initialize it with collection initializer: 或者您可以使用集合初始值设定项对其进行初始化:
void Start ()
{
var directions = new Dictionary<KeyCode, Vector3>
{
{ KeyCode.W, Vector3.forward },
{ KeyCode.S, Vector3.back },
{ KeyCode.A, Vector3.left },
{ KeyCode.D, Vector3.right}
};
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.