using System; using System.Collections; using UnityEngine; using UnityEngine.Scripting; using o0.Num; using o0.Geometry; //AOT适配器[#该脚本非常重要不要删除#] //该脚本需要挂载在场景中才会生效,只要静态构造函数得以调用就ok了 [Preserve] public class AOTAdapter : MonoBehaviour { static AOTAdapter() { //o0.Num泛型类的显式创建 Num>.Plus = (a, b) => a + b; Num>.Minus = (a, b) => a - b; Num>.Multiply = (a, b) => a * b; Num>.Divide = (a, b) => a / b; Num>.Rate = (a, b) => a * b; } //用保存的模块数据片段,测试陀螺仪校准,排查aot编译导致底层函数出错 IEnumerator TestCalibrateGyrBy9AxisData() { while (!AimHandler.ins) yield return null; Debug.Log("start-Test9AxisData"); AimHandler.ins.CalibrateGyr(true); string dataText = Resources.Load("test-data").text; int a = 0; foreach (var dataLine in dataText.Split('\n')) { AimHandler.ins.OnDataReceived(ToBytes(dataLine)); a++; if (a == 100) AimHandler.ins.CalibrateGyr(false); } Debug.Log("end-Test9AxisData"); } byte[] ToBytes(string msg) { return Array.ConvertAll(msg.Split(','), s => byte.Parse(s)); } }