当前位置:首页|资讯

工作流程概述 - 使用动作资产(Actions Asset)

作者:unity_某某师_高锦锦发布时间:2024-09-04


动作资产(Actions Asset)提供了一种定义、分组和管理动作集的方法,将它们作为数据存储在一个资产文件中,而不是直接在代码中定义。

使用动作资产的好处是,您可以将定义动作的数据与响应这些动作的游戏对象分离开来。这相比于直接在代码中嵌入动作定义,提供了更高层次的抽象和组织方式。

动作资产特别有用,因为它意味着所有动作定义都存储在一个单独的资产文件中,与您的脚本和预制体分离开来。这不仅在概念上更容易管理,而且在实际应用中,当团队中的不同人员同时处理项目的不同部分时,这种方式也更为便利。

相比于在脚本中嵌入动作,动作资产还提供了其他优势,例如将动作分组到动作映射(Action Maps)和控制方案(Control Schemes)中。

动作映射(Action Maps) 是将相关动作分组在一起的一种方式,每个映射对应于不同的场景。例如,您的游戏可能涉及驾驶车辆和步行导航,还可能有游戏内菜单。在这种情况下,最好为这三种情况分别创建三个不同的动作映射,您的游戏代码会根据需要在它们之间切换。比如,“驾驶”动作映射中的动作可能是“转向”、“加速”、“刹车”、“手刹”等,而“步行”动作映射中的动作可能是“移动”、“跳跃”、“蹲下”、“使用”等。

控制方案(Control Schemes) 也可以在动作资产中定义,允许您指定哪些绑定属于您定义的控制方案。例如,您可以有一个“手柄”控制方案,另一个是“键盘和鼠标”控制方案。这允许您确定用户当前正在使用哪个控制方案,以便游戏能够相应地做出响应。这个功能通常用于调整游戏内的UI,以显示屏幕提示中的正确按键或按钮。

从代码中访问动作资产

使用动作资产时,您可以通过两种不同的方式从代码中访问它:

  1. 在检查器中引用动作资产,或

  2. 生成一个包装动作资产的C#类

您的选择会影响您从代码中访问动作的方式。如果您在检查器中引用动作资产,必须使用字符串按名称读取动作。而如果使用生成的C#类,Unity会生成一个伴随的类作为新的.cs脚本资产,该类作为动作的包装器。然后,您可以在代码中创建生成的包装类的实例,并直接使用其API成员,这些成员名称与您配置的动作名称相同。

以下用相同的示例描述了这两种工作流程,以便您了解它们的区别。

在检查器中引用动作资产

要通过检查器引用动作资产:

  1. 在脚本中创建一个公共的InputActionsAsset字段。

  2. 在检查器中分配引用。

  3. 使用字符串按名称在脚本中访问动作。

下面的示例展示了基于字符串的访问方式。

注意:在上面的示例中,找到“移动”动作的引用后存储在一个变量中,以避免每帧通过字符串访问,这样可以避免性能问题。

通过C#包装器引用动作资产

要通过C#包装器引用动作资产:

  1. 在项目窗口中选择您的动作资产。

  2. 在检查器中启用 Generate C# Class 并选择 Apply。您应该会在项目窗口中看到一个与您的动作资产同名的C#资产。

  3. 在脚本中创建您的动作C#类的实例。

  4. 使用您的动作C#类的API在脚本中访问动作。

例如:

无论您选择使用C#包装器还是检查器引用,通过这样的动作资产使用方式,可以在动作窗口中组织和编辑动作。相比于使用嵌入动作或直接读取设备状态,这种方法更为灵活,并且通常是许多项目的良好解决方案。然而,您还可以通过使用 Player Input 组件添加另一层抽象,根据您的动作定义设置方法调用。

注意:由于动作资产可以通过这两种不同的方式使用(引用或C#包装器),因此在整个文档中使用的代码示例也可能在使用方式上有所不同。有些代码示例可能使用引用和字符串来识别动作,而其他示例可能使用C#包装器方法。



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1