Unity3d_Rewired官方文档翻译:要点(三):Rewired Editor->Players、Actions、InputBehaviours、Categories、CustomControllers

发布时间 2024-01-12 17:57:52作者: 尽头之外

仅翻译了官方文档中的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 元素的名称。可在脚本中使用并显示给玩家。必须是唯一的。