static void ConvertMesh(string src, string dstFolder) { GameObject go = AssetDatabase.LoadAssetAtPath <GameObject> (src); if (go != null) { // 输出骨架 ByteBuffer bfSkeleton = SkeletonSaver.Save(go); FileSaver.Save(bfSkeleton, Context.Skeletons, dstFolder + "/skeleton.doub"); // 输出网格 SkinnedMeshRenderer[] smrs = go.GetComponentsInChildren <SkinnedMeshRenderer> (); for (int i = 0; i < smrs.Length; i++) { string nameMesh = System.IO.Path.GetFileNameWithoutExtension(src); if (smrs.Length > 1) { nameMesh = smrs[i].sharedMesh.name + "@" + nameMesh; } ByteBuffer bfMesh = MeshSaver.Save(smrs[i].sharedMesh, smrs[i].bones); FileSaver.Save(bfMesh, Context.Mesh, dstFolder + "/" + nameMesh + ".doub"); for (int j = 0; j < smrs[i].sharedMaterials.Length; j++) { ByteBuffer bfMaterial = MaterialSaver.Save(smrs[i].sharedMaterials[j]); FileSaver.Save(bfMaterial, Context.Material, dstFolder + "/" + smrs[i].sharedMaterials[j].name + ".doub"); } } } else { UnityEngine.Debug.LogError("资源装载失败:" + src); } }
public void Init() { ab = TestData.LoadBundle("skeletontest.bundle"); go = TestData.LoadFirstAsset <GameObject>(ab); Assert.IsNotNull(go); ByteBuffer result = SkeletonSaver.Save(go); skeletons = Schema.Skeletons.GetRootAsSkeletons(result); }