17.综合练习题-补充知识点-通过Json数据加载配置文件
17.1 知识点
分析PlayerInput文件中的输入配置文件
查看Inputaction配置文件,观察json数据结构类
点进去看PlayerInput的action,在点进去看InputActionAsset类 发现有和Json相关的方法
通过Json手动加载输入配置文件
在Resource是下创建一个json文件,复制这节课创建的InputAction文件进去。Cube的Action文件置空。
在代码中手动的加载json 创建出InputActionAsset资源并将解析后的 InputActionAsset 对象赋值给 input 对象的 actions 属性
// 从资源文件夹中加载名为 "PlayerInputTest" 的文本资源,并将其内容作为字符串存储在变量 json 中
string json = Resources.Load<TextAsset>("PlayerInputTest").text;
// 使用 InputActionAsset 类的静态方法 FromJson 解析 json 字符串,返回解析后的 InputActionAsset 对象,并将其存储在变量 asset 中
InputActionAsset asset = InputActionAsset.FromJson(json);
// 将解析后的 InputActionAsset 对象赋值给 input 对象的 actions 属性
input.actions = asset;
// 当有输入动作被触发时执行的回调函数
input.onActionTriggered += (context) =>
{
// 判断输入动作的触发阶段是否为 Performed(已执行)
if (context.phase == InputActionPhase.Performed)
{
// 根据输入动作的名称进行匹配
switch (context.action.name)
{
case "Move":
// 如果匹配到 Move 动作,则打印 "移动"
print("移动");
break;
case "Look":
// 如果匹配到 Look 动作,则打印 "看向"
print("看向");
break;
case "Fire":
// 如果匹配到 Fire 动作,则打印 "开火"
print("开火");
break;
}
}
};
17.2 知识点代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class Lesson17_综合练习题_补充知识点_通过Json数据加载配置文件 : MonoBehaviour
{
public PlayerInput input;
void Start()
{
#region 知识点一 分析PlayerInput文件中的输入配置文件
#endregion
#region 知识点二 通过Json手动加载输入配置文件
// 从资源文件夹中加载名为 "PlayerInputTest" 的文本资源,并将其内容作为字符串存储在变量 json 中
string json = Resources.Load<TextAsset>("PlayerInputTest").text;
// 使用 InputActionAsset 类的静态方法 FromJson 解析 json 字符串,返回解析后的 InputActionAsset 对象,并将其存储在变量 asset 中
InputActionAsset asset = InputActionAsset.FromJson(json);
// 将解析后的 InputActionAsset 对象赋值给 input 对象的 actions 属性
input.actions = asset;
// 当有输入动作被触发时执行的回调函数
input.onActionTriggered += (context) =>
{
// 判断输入动作的触发阶段是否为 Performed(已执行)
if (context.phase == InputActionPhase.Performed)
{
// 根据输入动作的名称进行匹配
switch (context.action.name)
{
case "Move":
// 如果匹配到 Move 动作,则打印 "移动"
print("移动");
break;
case "Look":
// 如果匹配到 Look 动作,则打印 "看向"
print("看向");
break;
case "Fire":
// 如果匹配到 Fire 动作,则打印 "开火"
print("开火");
break;
}
}
};
#endregion
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com