This commit is contained in:
yzx 2024-06-28 10:12:19 +08:00
parent 731a39f598
commit ce4bd14983
14 changed files with 234 additions and 42 deletions

View File

@ -230,7 +230,32 @@ namespace MotionFramework.Scripts.Runtime.Engine.Engine.Network.WebRequest
return request.downloadHandler.text;
}
}
/// <summary>
/// Ìá½»JSONÊý¾Ý±íµ¥
/// </summary>
/// <param name="url"></param>
/// <param name="jsonData"></param>
/// <param name="onProgress"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public async UniTask<string> PostJsonAsync(string url, string jsonData, Action<float> onProgress = null, CancellationToken cancellationToken = default)
{
using (UnityWebRequest request = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPOST))
{
byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(jsonData);
request.uploadHandler = new UploadHandlerRaw(bodyRaw);
request.downloadHandler = new DownloadHandlerBuffer();
request.SetRequestHeader("Content-Type", "application/json");
await SendRequestWithProgress(request, onProgress, cancellationToken);
if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError)
{
Debug.LogError($"Òì³££º {request.error}");
return null;
}
return request.downloadHandler.text;
}
}
/// <summary>
/// ½ø¶È
/// </summary>

View File

@ -581,10 +581,30 @@ PrefabInstance:
insertIndex: -1
addedObject: {fileID: 1418789607}
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 6026879024415736155, guid: fa12b84946083d14cb4447029910be28, type: 3}
insertIndex: -1
addedObject: {fileID: 248632706}
- targetCorrespondingSourceObject: {fileID: 8362301506298638284, guid: fa12b84946083d14cb4447029910be28, type: 3}
insertIndex: -1
addedObject: {fileID: 18767237}
m_SourcePrefab: {fileID: 100100000, guid: fa12b84946083d14cb4447029910be28, type: 3}
--- !u!1 &248632703 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 6026879024415736155, guid: fa12b84946083d14cb4447029910be28, type: 3}
m_PrefabInstance: {fileID: 191666367}
m_PrefabAsset: {fileID: 0}
--- !u!114 &248632706
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 248632703}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d32e156afe2d4df78e71bd2fa58cce6b, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &421131203
GameObject:
m_ObjectHideFlags: 0

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5412a6a06cb4a22449ce9a97230cf70e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,13 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class APIs
{
private static string ip = "http://172.16.1.127:9206";
/// <summary>
/// 虚拟仿真考试提交分数
/// </summary>
public static string SimulationScore = ip + "/pro/score/simulationScore";
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: fc40ff633e445a44f847f7452e0e2ddc
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,21 @@
using System.Collections.Generic;
namespace DefaultNamespace.Dto
{
public class SubmitScoreStep
{
public string stepName { get; set; }
public string testPoint { get; set; }
public int score { get; set; }
}
public class SubmitScoreData
{
public string userName { get; set; }
public string userId { get; set; }
public int examId { get; set; }
public int classId { get; set; }
public string userTime { get; set; }
public List<SubmitScoreStep> stepList { get; set; }
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c2f1e6b74cdc4049852e8e52afa57e7d
timeCreated: 1719470950

View File

@ -4,8 +4,28 @@ using DefaultNamespace;
using MotionFramework;
using UnityEngine;
public class ParsedData
{
public string SceneName { get; set; }
public int SceneModel { get; set; }
public int ExamId { get; set; }
public string UserId { get; set; }
public string Username { get; set; }
public string Token { get; set; }
public int UserTime { get; set; }
public int ClassId { get; set; }
}
/// <summary>
/// 0 场景名,1 练习或者考试,2 examId ,3 userId,4 userName,5 token,6 userTime,7 classId
/// 2024-06-14 15:04:12#'sxfz://;lyht,0,examId,userId,username,token,90,classId;/'|
/// </summary>
public class InfoDataManager : ModuleSingleton<InfoDataManager>, IModule
{
private ParsedData _parsedData;
private void ParseFileContent(string content)
{
// 首先按照 # 进行分割,获取日期和数据部分
@ -45,31 +65,39 @@ public class InfoDataManager : ModuleSingleton<InfoDataManager>, IModule
return;
}
string code = dataElements[0];
string value1 = dataElements[1];
string value2 = dataElements[2];
string userId = dataElements[3];
string username = dataElements[4];
string token = dataElements[5];
string value3 = dataElements[6];
_parsedData.SceneName = dataElements[0];
_parsedData.SceneModel = int.Parse(dataElements[1]);
_parsedData.ExamId = int.Parse(dataElements[2]);
_parsedData.UserId = dataElements[2];
_parsedData.Username = dataElements[4];
_parsedData.Token = dataElements[5];
_parsedData.UserTime = int.Parse(dataElements[6]);
_parsedData.ClassId = int.Parse(dataElements[7]);
Debug.Log("Code: " + code);
Debug.Log("Value 1: " + value1);
Debug.Log("Value 2: " + value2);
Debug.Log("User ID: " + userId);
Debug.Log("Username: " + username);
Debug.Log("Token: " + token);
Debug.Log("Value 3: " + value3);
MotionEngine.GetModule<DataConfigManager>().SetProcessMode(int.Parse(value1));
Debug.Log("场景名: " + _parsedData.SceneName);
Debug.Log("场景模式: " + _parsedData.SceneModel);
Debug.Log("考试ID: " + _parsedData.ExamId);
Debug.Log("User ID: " + _parsedData.UserId);
Debug.Log("Username: " + _parsedData.Username);
Debug.Log("Token: " + _parsedData.Token);
Debug.Log("时间: " + _parsedData.UserTime);
Debug.Log("班级ID: " + _parsedData.ClassId);
MotionEngine.GetModule<DataConfigManager>().SetProcessMode(_parsedData.SceneModel);
}
public ParsedData GetParsedData()
{
return _parsedData;
}
public void OnCreate(object createParam)
{
_parsedData = new ParsedData();
string content = System.IO.File.ReadAllText(Application.streamingAssetsPath + "/info.ini");
ParseFileContent(content);
}
@ -85,4 +113,4 @@ public class InfoDataManager : ModuleSingleton<InfoDataManager>, IModule
public void OnGUI()
{
}
}
}

View File

@ -24,6 +24,7 @@ namespace DefaultNamespace.ProcessMode
private int _currentActionGameIndex; // 当前动作索引,确保动作顺序
private Dictionary<int, List<string>> _incorrectClicksPerStep; // 每个步骤的错误点击记录
private SceneStepData _sceneStepData;
private List<SubmitScoreStep> _submitScoreSteps = new List<SubmitScoreStep>();
public AnimationProcess CurrentProcess => _processes[_currentMode.ToString()];
@ -200,6 +201,7 @@ namespace DefaultNamespace.ProcessMode
if (_currentStepIndex == _processes[_currentMode.ToString()].Steps.Count)
{
Debug.Log(CalculateTotalScore());
OnCompleteEvent?.Invoke(CalculateTotalScore());
Debug.Log("全部完成了!!!!");
}
@ -400,6 +402,7 @@ namespace DefaultNamespace.ProcessMode
}
}
/// <summary>
/// 计算总分
/// </summary>
@ -408,15 +411,31 @@ namespace DefaultNamespace.ProcessMode
float totalScore = 0;
foreach (var step in _processes[_currentMode.ToString()].Steps)
{
SubmitScoreStep sub = new SubmitScoreStep();
int stepIndex = _processes[_currentMode.ToString()].Steps.IndexOf(step);
if (_incorrectClicksPerStep.TryGetValue(stepIndex, out var value))
{
float sco = step.Score / step.Actions[0].TargetObjects.Count;
Debug.Log("每个物体的分数--->" + sco);
float zong = step.Score - sco * value.Count;
totalScore += zong;
Debug.Log("扣的分数--->" + (step.Score - sco * value.Count));
Debug.Log($"步骤 {stepIndex + 1} 错误点击的物体: {string.Join(", ", value)}");
sub.score = (int)zong;
sub.stepName = step.StepDescription;
sub.testPoint = step.Actions[0].Description;
}
else
{
totalScore += step.Score; // 每个步骤满分为10
sub.score = (int)step.Score;
sub.stepName = step.StepDescription;
sub.testPoint = step.Actions[0].Description;
}
_submitScoreSteps.Add(sub);
}
Debug.Log($"总分: {totalScore}");
@ -584,5 +603,10 @@ namespace DefaultNamespace.ProcessMode
{
return _currentMode;
}
public List<SubmitScoreStep> GetSubmitScoreStepList()
{
return _submitScoreSteps;
}
}
}

View File

@ -0,0 +1,53 @@
using System;
using System.Threading.Tasks;
using DefaultNamespace.Dto;
using DefaultNamespace.ProcessMode;
using MotionFramework;
using MotionFramework.Scripts.Runtime.Engine.Engine.Network.WebRequest;
using Newtonsoft.Json;
using UnityEngine;
namespace DefaultNamespace
{
/// <summary>
/// 提交分数
/// </summary>
public class SubmitScoreComponent : MonoBehaviour
{
private void Start()
{
// Submit();
}
public async void Submit()
{
await Task.Delay(TimeSpan.FromSeconds(1));
ParsedData parsedData = MotionEngine.GetModule<InfoDataManager>().GetParsedData();
SubmitScoreData sub = new SubmitScoreData();
sub.userName = parsedData.SceneName;
sub.userId = parsedData.UserId;
sub.examId = parsedData.ExamId;
sub.classId = parsedData.ClassId;
sub.userTime = "111";
sub.stepList = MotionEngine.GetModule<AnimationProcessManager>().GetSubmitScoreStepList();
string js = JsonConvert.SerializeObject(sub);
Debug.Log(js);
string json = await MotionEngine.GetModule<WebRequestManager>().PostJsonAsync(APIs.SimulationScore, js, (ste) => { });
Debug.Log(json);
}
private void OnGUI()
{
if (GUI.Button(new Rect(100, 100, 100, 100), ""))
{
Submit();
}
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: d32e156afe2d4df78e71bd2fa58cce6b
timeCreated: 1719470113

View File

@ -20,7 +20,7 @@
"actions": [
{
"description": "领取工器具及仪器设备",
"score": 0,
"score": 30,
"isSequential": false,
"targetObjects": [
"螺丝刀",
@ -145,7 +145,7 @@
"score": 3.11,
"actions": [
{
"description": "更换集中器",
"description": "更换集中器",
"score": 0,
"isSequential": false,
"targetObjects": [
@ -192,7 +192,7 @@
"JZQ_螺丝004",
"JZQ_螺丝0044",
"JZQ_螺丝006",
"JZQ_螺丝007"
"JZQ_螺丝005"
]
}
]
@ -250,14 +250,10 @@
"isSequential": false,
"targetObjects": [
"JZQ_螺丝001",
"JZQ_螺丝0011",
"JZQ_螺丝002",
"JZQ_螺丝0022",
"JZQ_螺丝003",
"JZQ_螺丝0033",
"JZQ_螺丝004",
"JZQ_螺丝0044",
"JZQ_螺丝005",
"JZQ_螺丝007",
"JZQ_螺丝006"
]
}
@ -346,19 +342,6 @@
]
}
]
},{
"stepDescription": "加装封印",
"score": 1.4,
"actions": [
{
"description": "加装封印",
"score": 0,
"isSequential": false,
"targetObjects": [
"电柜门封印box碰撞"
]
}
]
}
]
}

View File

@ -1 +1 @@
2024-06-14 15:04:12#'sxfz://;lyht,0,18,userId,username,token,90;/'|
2024-06-14 15:04:12#'sxfz://;lyht,0,333,444,555,666,777,888;/'|

View File

@ -780,4 +780,4 @@ PlayerSettings:
hmiLoadingImage: {fileID: 0}
platformRequiresReadableAssets: 0
virtualTexturingSupportEnabled: 0
insecureHttpOption: 0
insecureHttpOption: 1