protected Vector2[] Cursor2Vector2() { //分包思想---测试32X32来拆包,2048个数据量 Main.instance.tuioTransmitter.RemoveAll(); Vector2[] posM = new Vector2[cbInput / 2]; if(InputPos==null) Debug.LogError("InputPos==null 没有数据"); byte[] Pos = InputPos; //这里改成轮廓 //不分包+MSG int x=0; int y = 0; List<Vector2> vectorList = new List<Vector2>(); if (Pos==null ) return null; for (int i = 0, n = Pos.Length; i < n; i += 2) { x = (int) Pos[i] * 1920 / PXX; y = (PXY - 1 - (int) Pos[i + 1]) * 1080 / PXY; Vector2 getpos = Vector2.Scale(posM[i / 2], Main.instance.invScreenDimensions); lastPosition = getpos; Vector2 newVector = new Vector2(x, y); vectorList.Add(newVector); if (n - i <= 1) { break; } } return vectorList.ToArray(); }
时间: 2024-02-14 15:29:11 浏览: 116
根据你提供的代码,`Cursor2Vector2()` 方法将一个字节数组转换为 `Vector2` 数组。以下是代码的解释:
```csharp
protected Vector2[] Cursor2Vector2()
{
Main.instance.tuioTransmitter.RemoveAll();
Vector2[] posM = new Vector2[cbInput / 2];
if (InputPos == null)
{
Debug.LogError("InputPos==null 没有数据");
}
byte[] Pos = InputPos; // 这里改成轮廓
// 不分包+MSG
int x = 0;
int y = 0;
List<Vector2> vectorList = new List<Vector2>();
if (Pos == null)
{
return null;
}
for (int i = 0, n = Pos.Length; i < n; i += 2)
{
x = (int)Pos[i] * 1920 / PXX;
y = (PXY - 1 - (int)Pos[i + 1]) * 1080 / PXY;
Vector2 getpos = Vector2.Scale(posM[i / 2], Main.instance.invScreenDimensions);
lastPosition = getpos;
Vector2 newVector = new Vector2(x, y);
vectorList.Add(newVector);
if (n - i <= 1)
{
break;
}
}
return vectorList.ToArray();
}
```
这个方法的作用是将一个字节数组 `InputPos` 转换为 `Vector2` 数组。在方法中,首先移除了一个名为 `tuioTransmitter` 的对象的所有内容。然后,创建了一个大小为 `cbInput / 2` 的 `posM` 数组。
接下来,通过遍历字节数组 `Pos`,每次增加2个索引,将 `Pos[i]` 和 `Pos[i + 1]` 的值分别赋给 `x` 和 `y`。根据一些计算,将 `x` 和 `y` 值构建为 `Vector2` 对象,并添加到 `vectorList` 列表中。
最后,将 `vectorList` 转换为 `Vector2` 数组,并返回该数组。
请注意,代码中的其他变量(如 `cbInput`、`PXX`、`PXY`、`lastPosition`、`Main.instance.invScreenDimensions`)没有在你的代码中提供,你需要根据实际情况进行替换。
希望这个解释对你有所帮助!如果你还有其他问题,请随时提问。
阅读全文