Unity3d_Rewired官方文档翻译:要点(三):Rewired Editor->Players、Actions、InputBehaviours、Categories、CustomControllers
仅翻译了官方文档中的Essentials(要点)、Concepts(概念)两部分,这是文档中最重要的部分,理解了这两部分的内容应该足以让你将Rewired运用到你的项目中,之后再去阅读文档的其他部分也能更容易理解。
斜体加下划线部分为添加的注解,非官方文档内容。若你发现有翻译、注解不正确的,请留言告知,以免再继续误导他人,感谢。
要点
Rewired Editor
Players
"Players"页面允许您创建和编辑Player。
在Rewired中,Player是输入的中心。一般来说,您总是从Player而不是直接从控制器获得输入。因此,必须始终创建至少一个Player。
在将控制器映射到Action之前,必须先为Player分配控制器映射。首先要在"Joystick Maps"、"Keyboard Maps"、"Mouse Maps"和"Custom Controller Maps"中创建映射,然后将它们分配给每个Player。
玩家属性
Player Id | Player的 id。可用于通过脚本获取Player。只读 |
---|---|
Name | 用于通过脚本访问Player。必须是唯一的。 |
Descriptive Name | 可向玩家显示的描述性名称。 |
Is Playing on Start | 该Player是否以 isPlaying = true 开始?如果使用该选项,这会影响控制器的自动分配。 |
Assign Mouse on Start | 启动时将鼠标分配给该Player。 |
Assign Keyboard on Start | 启动时将键盘分配给该Player。 |
Exclude Joy Auto-Assign | 确定操纵杆是否可以自动分配给该Player。 |
创建新玩家
单击 "Players"框下方的 "New "按钮。
为玩家命名
编辑第二栏中的 "Name "和 "Descributive Name "字段。
创建自定义控制器
单击 "Starting Controllers "下的 "Custom Controllers "按钮,然后单击 "Add Custom Controller "按钮并选择一个控制器。
注意:与操纵杆不同,自定义控制器是为每个Player实例化的。添加自定义控制器时,控制器将在游戏开始时创建并分配给Player。如果为多个Player添加同一个控制器,自定义控制器将为每个Player实例化,因此为每个Player设置一个标签有助于区分控制器。
自定义控制器选项
Controller | 要为该Player实例化的控制器。 |
---|---|
Tag | 为该Player的控制器设置标签。可用于通过脚本获取控制器。 |
分配控制器映射
在 "Default Controller Maps "下,单击与要分配的控制器映射类型相对应的按钮。然后单击 "Add Joystick Map "(或您选择的任何映射类型)并更改设置。这些控制器映射将在Player启动时或为Player分配新操纵杆或自定义控制器时默认加载。
控制器映射选项
Start Enabled | 此控制器映射是否开始时就启用?如果设置为 "false",该映射中的所有控制都将被忽略。 |
---|---|
Category | 控制器映射类别 |
Layout | 控制器映射布局 |
配置Layout Manager设置
在 "Controller Map Helper "下单击 "Layout Manager "按钮。右栏将显示 "Layout Manager Setting"。
Layout Manager设置
Enabled | 如果启用,控制器贴图布局管理器将在此Player中使用,以管理根据分配的规则集加载的控制器映射。 |
---|---|
Load from User Data Store | 如果启用,控制器映射将从 UserDataStore(如果可用)加载,而不是从Input Manager默认值加载。如果在 UserDataStore 中找不到匹配的控制器映射,则将加载Input Manager默认值。注意:UserDataStore 实现必须实现 IControllerMapStore 才能使用。 |
Starting Rule Sets | 初始规则集列表。 |
分配Layout Manager规则集
单击 "Add Rule Set "将规则集添加到列表中。在此处添加规则集之前,必须先创建一些布局管理器规则集。您可以在列表中添加任意数量的规则集。这些规则集将在开始时分配给Player的Layout Manager并应用其规则。
Layout Manager规则集选项:
Start Enabled | 如果为 "true",规则集将启用并进行评估。否则,它将被禁用并被忽略。 |
---|---|
Rule Set | 规则集。 |
配置Map Enabler设置
在 "Controller Map Helper "下单击 "Map Enabler "按钮。右栏将显示 "Map Enabler Setting"。
Map Enabler设置
Enabled | |
---|---|
Starting Rule Sets | 初始规则集列表。 |
分配Map Enabler规则集
单击 "Add Rule Set "将规则集添加到列表中。在此处添加规则集之前,必须先创建一些Map Enabler规则集。您可以在列表中添加任意数量的规则集。这些规则集将在开始时分配给Player的Map Enabler并应用其规则。
Map Enabler规则集选项:
Start Enabled | 如果为 "true",规则集将启用并进行评估。否则,它将被禁用并被忽略。 |
---|---|
Rule Set | 规则集。 |
Actions
通过 "Actions "页面可以创建和编辑Action。
"Categories"框:
选择类别可查看该类别中的Action。
单击 "Edit Categories "添加或编辑操作类别。
"Action"框:
选择一个Action以修改其属性。
Action属性:
Action Id | 可用于通过脚本获取Action值。 |
---|---|
Name | 用于通过脚本获取Action值。必须是唯一的。 |
Descriptive Name | 在映射控件时显示给玩家的描述性名称。轴(未映射为分割轴时)和按钮都会显示该名称。 |
Type | 您希望映射到此Action的元素类型。这是为了帮助用户控制映射,以便映射正负轴。即使设置为 "Button",仍可从 GetAxis 获取完整的轴数据。 |
Positive Name | 轴的正极的描述性名称。如果映射的是正负轴,可以向玩家显示。 |
Negative Name | 轴的负极的描述性名称。如果映射的是正负轴,可以向玩家显示。 |
Input Behavior | 决定此Action最终处理轴和按钮值的行为。 |
Visible in Lists | 确定该Action是否出现在某些列表中,例如在控件重映射 UI 中... |
Input Behaviour
"Input Behaviours "页面允许您创建和编辑Input Behaviour。
Input Behaviour允许您设置数字轴模拟选项(灵敏度、重力等)、如何处理鼠标轴、GetButtonDown 缓冲区、按钮双击速度、按钮死区等。您可以在 "Actions "页面上将输入行为分配给一个Action。
Input Behaviour 属性
Name | 当前Input Behavior名称。 |
---|---|
Joystick Axis Sensitivity | 所有操纵杆轴均乘以该值。 |
Digital Axis Simulation | 启用数字轴模拟,根据重力和灵敏度,按下按钮或按键会随时间逐渐增加动作的轴值。这只会影响按钮和按键产生的轴值。 |
Digital Axis Snap | 当接收到与当前输入相反的数字模拟轴输入时,会将轴值重置到 0,然后再继续。这只会影响按键和按钮产生的轴值。 |
Digital Axis Instant Reverse | 当接收到与当前输入相反的数字模拟轴输入时,将轴值反转为相反的符号,然后再继续。这只会影响按键和按钮产生的轴值。 |
Digital Axis Gravity | 轴值向 0 下降的速度(单位/秒)。 这仅影响按钮和按键产生的轴值。 |
Digital Axis Sensitivity | 向 1.0 轴值移动的速度(单位/秒)。这只会影响按钮和按键生成的轴值。 |
Mouse XY Axis Mode | 影响鼠标 X/Y 轴对数值的贡献。 Mouse Axis - 取决于移动速度的数值范围。该值可以也确实会超过 -1.0/1.0 很多。当轴类型设置为鼠标移动时,该值与 Unity 的 Input.GetAxis 返回的值相同。"Mouse XY Axis Sensitivity"乘以该轴值。 Digital Axis - 任何鼠标移动都会返回一个从 -1.0 到 1.0 的值,并通过数字轴滤波器进行平滑处理。这将使鼠标移动表现得与按钮或按键操作类似。 ScreenPositionDelta - 一个从 -1.0 到 1.0 的值,表示在更新周期内横跨屏幕的移动距离。该值根据屏幕的宽度和高度进行归一化处理。在一个更新周期内移动整个屏幕的距离将返回 -1.0/1.0。 Speed - 基于鼠标在屏幕上移动速度的值。速度根据鼠标移动的 delta 值/delta 时间计算得出。返回值可超过 -1.0/1.0。 |
Mouse XY Axis Sensitivity | (如果Mouse XY Axis Mode = MouseAxis)。 鼠标 X/Y 轴乘以此值。 |
Mouse XY Delta Calc | (如果Mouse XY Axis Mode = ScreenPositionDelta or Speed) 决定如何计算鼠标 XY 轴的屏幕位置delta(以及速度)。如果屏幕宽度和高度不相等,鼠标在 X 和 Y 轴上的等效移动将产生不同的 X 和 Y delta结果。 如果您需要 X 和 Y 轴移动的 delta 值一致,请将其更改为 ScreenWidth 或 ScreenHeight,这样 delta 值将只根据一个维度计算。 请注意,如果设置的值不是正常值,返回值可能会超过 -1.0/1.0。 |
Mouse Other Axis Mode | 影响 X/Y 以外的鼠标轴对数值的贡献。这会影响鼠标滚轮轴。 Mouse Axis - 数值范围从 -1 到 1 不等,具体取决于移动速度。当轴类型设置为鼠标移动时,该值与 Unity 的 Input.GetAxis 返回的值相同。"Mouse Other Axis Sensitivity"乘以该轴值。 Digital Axis - 任何运动都返回 -1 至 1,并通过数字轴值进行平滑处理。鼠标移动的行为类似于按钮或键盘按键。鼠标灵敏度不会影响该模式。相反,所有数字轴滤波器都会应用。 |
Mouse Other Axis Sensitivity | (如果Mouse Other Axis Mode = MouseAxis)。 除 X/Y 轴外的所有鼠标轴都乘以该值。 |
Custom Controller Axis Sensitivity | 所有自定义控制器轴均乘以该值。 |
Button Double Press Speed | 触发两次点击或两次按下的时间(以秒为单位)。 |
Button Short Press Time | 按住按钮或轴以触发短按的时间(以秒为单位)。 |
Button Short Press Expires In | 短按触发后的到期时间(以秒为单位),过期后将不再对任何按钮事件返回 true。例如,如果希望短按和长按互斥,则可将该值设为 2。 [0 = 永不过期] |
Button Long Press Time | 按住按钮或轴以触发长按的时间(以秒为单位)。 |
Button Long Press Expires In | 长按触发后的到期时间(以秒为单位),过期后将不再对任何按钮事件返回 true。例如如果希望长按在首次触发为真后 2 秒失效,请将此值设为 2。 [0 = 永不过期] |
Button Repeat Rate | 使用 GetButtonRepeating 或等价事件查询时,按钮状态每秒为 True 的次数。 |
Button Repeat Delay | 当使用 GetButtonRepeating 或等效事件查询时,以秒为单位的重复开始前的持续时间。[0 = 无延迟] |
Button Dead Zone | 当Action的轴值低于此阈值时,GetButton 将返回 false。如果您将轴映射为按钮,这将非常有用。如果该值太低,GetButton 可能总是返回 true。如果值为 1,则永远不会返回 true。 |
Button Down Buffer | 缓冲 GetButtonDown 结果的时间(以秒为单位)。这将使 GetButtonDown 在超出一帧的额外时间内返回 TRUE。当按键速度非常快,而游戏由于某些阻挡Action而忽略了这些按键时,这对防止错过按键非常有用。例如:连续快速出拳,但在出拳动画中按键被忽略。缓冲区的值通常应该很小,例如 0.08 秒,但这取决于您的具体需求。 |
Map Categories
"Map Categories "页面允许您创建和编辑Map Categorie。
Map Categorie 属性:
Category Id | 可用于通过脚本获取类别。 |
---|---|
Name | 类别名称。用于在脚本中按类别查找内容。必须是唯一的。 |
Descriptive Name | 可向玩家显示的描述性名称。 |
Tag | 允许您在脚本中标记一组类别并按标记搜索类别。 |
User Assignable | 决定该类别是否出现在某些列表中。还决定元素分配是否可以通过冲突检查自动移除。如果用户不可分配,则冲突检查不能自动删除分配。这可用于保护某些元素,防止用户将操作映射到用于系统操作的元素上。例如,ESC。 |
Check Conflicts With All | 确定当用户将控件映射到该类别中的映射表时,要针对哪些映射表类别检查赋值冲突。 True = 检查所有类别中的映射表。 False = 指定要检查的类别。 |
Check Conflicts With Specific Categories | 添加您希望允许冲突检查的特定类别。请注意,这不是一个双向设置。它只影响从该类别中的控件到其他类别的冲突检查。如果要启用/禁用反向检查,则必须在其他类别中进行设置。 |
Action Categories
通过 "Action Categories "页面可以创建和编辑Action Category。
Action Categories可用于组织Action。Action Categories还可用于用户控制映射界面,向用户显示分类的Action列表。
Action Category属性:
Category Id | 可用于通过脚本获取类别。只读 |
---|---|
Name | 类别名称。用于在脚本中按类别查找内容。必须是唯一的。 |
Descriptive Name | 可向玩家显示的描述性名称。 |
Tag | 允许您在脚本中标记一组类别并按标记搜索类别。 |
Visible in Lists | 决定该类别是否出现在某些列表中,例如在控件重映射用户界面中。 |
Custom Controller
"Custom Controllers "页面允许您创建和编辑自定义控制器。
自定义控制器是您可以自定义的虚拟控制器,您可以根据需要添加任意数量的轴和按钮。任何值都可以用来驱动控制器的元素值。例如,自定义控制器可用于屏幕触摸控制器。(请参阅 Rewired/Examples 文件夹中的示例)。
创建自定义控制器
单击 "Custom Controllers "框下方的 "New "按钮,创建一个新控制器。
在 "Controller Properties "下为控制器命名和描述性名称。
为控制器添加轴和按钮,并为每个轴和按钮定义属性。
自定义控制器属性
Id | 自定义控制器的源 ID。 注意:这与控制器实例化时分配给它的唯一 ID 不一致,因此不能用来获取实例化的控制器。不过,可以通过脚本手动实例化这种类型的自定义控制器。 |
---|---|
Name | 控制器的名称。用于编写脚本。必须唯一。 |
Descriptive Name | 可向玩家显示的描述性名称。 |
Type Guid | 控制器类型指南。它用于使用 Controller.hardwareTypeGuid 唯一标识自定义控制器类型。每个自定义控制器都应有不同的 Guid。 |
轴属性
Id | 元素的标识符 id。可在脚本中使用。 |
---|---|
Name | 元素的名称。可在脚本中使用并显示给玩家。必须是唯一的。 |
Range | 坐标轴范围的哪一部分对数值有贡献? Full = 轴的正负两边。 Positive = 只占坐标轴的正边。 Negative = 只有坐标轴的负边。 |
Calibrate | 将数值缩放和限制在最小/最大范围,并应用其他校准转换。如果希望数值不经修改直接通过,请禁用此功能。 |
Zero | 轴的零点位置。 |
Min | 轴可能的最低值。[-1 至 1] |
Max | 轴可能的最高值。[-1 至 1] |
Dead Zone | 当轴值在零点±此阈值范围内时,返回值将为零。 |
Invert | 置换轴的最终值。 |
Sensitivity Type | 确定轴的灵敏度的默认计算方式。 Multiplier(相乘):数值乘以灵敏度。 Power(幂):结果将是数值的灵敏度次幂。 当灵敏度接近 0 时,轴靠近零位/中心位置的灵敏度会增加,而靠近最大位置的灵敏度会降低。 当灵敏度超过 1 时,轴靠近零位/中心位置的灵敏度会降低,而靠近最大位置的灵敏度会提高。 Curve(曲线):数值乘以曲线上的一个点。 |
Sensitivity | 灵敏度值。 (仅当灵敏度类型设置为Multiplier或Power时可用)。 |
Sensitivity Curve | 灵敏度曲线 (仅当灵敏度类型设置为Curve时可用)。 |
Coordinate Mode | 轴数据的坐标模式。对于返回 delta 值的坐标轴,应将其设置为 "Relative"。 |
按钮属性
Id | 元素的标识符 id。可在脚本中使用。 |
---|---|
Name | 元素的名称。可在脚本中使用并显示给玩家。必须是唯一的。 |