我做了很多测试,在运行时以统一的方式导入FBX,我正在测试更多.导入时,FBX文件必须为ASCII格式.它需要从3dsMax或Maya导出为ASCII.ASCII FBX文件的大小取决于文件.
另一方面,与ASCII相比,二进制FBX格式的尺寸更小.
我的脚本适用于ASCII FBX(适用于大多数型号).它使用parse方法读取所有纯文本,包括FBX文件中的顶点,三角形和法线,并在GameObjects中构造网格.
问题是模型的大小和导入的速度.资产包不是一个好的解决方案.
如果有人知道在RUNTIME导入BINARY FBX的方法,请分享您的知识.另外,如果您知道如何在运行时将Unity中的二进制fbx反序列化为ASCII FBX,请告诉我.
我需要将FBX从Binary反序列化为ASCII.因为这是一个简化版本.
使用Java中的MergeSort:
public void mergeSort(int[] A)
{
if (A.length > 1)
{
int q = A.length/2;
int[] leftArray = Arrays.copyOfRange(A, 0, q);
int[] rightArray = Arrays.copyOfRange(A,q,A.length);
mergeSort(leftArray);
mergeSort(rightArray);
merge(A,leftArray,rightArray);
}
}
Run Code Online (Sandbox Code Playgroud)
上面代码中的递归在Java中运行良好.
因此,为了好奇,我想将函数Arrays.copyOfRange从java转换为c#.C#中的Array.copy有五个参数.你知道c#中的任何更简单的函数都会从位置x到y(比如java)开始获取数组的某些元素.
在c#中我编写了上面这样的方法:
public void mergeSort(int[] A)
{
if (A.Length > 1)
{
int q = A.Length / 2;
int[] leftArray = new int[q];
int[] rightArray = new int[A.Length];
for (int i = 0; i < q; i++)
{
leftArray[i] = A[i];
Console.WriteLine(leftArray[i]);
}
for (int i = q; i …Run Code Online (Sandbox Code Playgroud)