コード例 #1
0
    //在这里方法中就可以绘制面板。
    public override void OnInspectorGUI()
    {
        //得到Test对象
        Entery entry = (Entery)target;
        BundleLoader bundleLoader_ = entry.GetComponent<BundleLoader>();

        model_ = EditorGUILayout.ObjectField("Model", model_, typeof(GameObject), true) as GameObject;

        animClip_ = EditorGUILayout.ObjectField("AnimClip", animClip_, typeof(AnimationClip), true) as AnimationClip;

        if (GUILayout.Button("test"))
        {

            AnimationClip c = animClip_;
            Debug.Log(c.length);
            Debug.Log(c.name);
            Debug.Log(c.GetType());

            AnimationClipCurveData[] data = AnimationUtility.GetAllCurves(animClip_, true);
            Debug.Log(data.Length);

            EditorCurveBinding[] binds = AnimationUtility.GetCurveBindings(c);
            Debug.Log(binds.Length);
        }

        if (GUILayout.Button("load assetbundle"))
        {
            bundleLoader_.ReadFileList();
            bundleLoader_.LoadAssetBundle();
        }

        if (GUILayout.Button("导出文件"))
        {
            if (model_ == null)
            {
                Debug.LogError("model not set!");
                return;
            }

            MeshExpoter expoter = new MeshExpoter();
            Transform[] bones = null;

            foreach (GameObject g in new GameObjectWalker(model_))
            {
                Mesh mesh = null;
                SkinnedMeshRenderer skinRenderer = g.GetComponent<SkinnedMeshRenderer>();

                if (skinRenderer != null)
                {
                    expoter.Export(skinRenderer);
                    mesh = skinRenderer.sharedMesh;
                    bones = skinRenderer.bones;
                }

                //if(mesh == null)
                //{
                //    MeshFilter meshFilter = g.GetComponent<MeshFilter>();
                //    mesh = meshFilter != null ? meshFilter.mesh : null;
                //}

                if (mesh == null)
                {
                    continue;
                }
            }

            if (bones != null) {
                expoter.Export(bones);
            }

            if (animClip_ != null) {
                expoter.Export(animClip_);
            }

            //expoter.SaveToFile(OutputFile_ + model_.name + ".json");

            string data = expoter.SerializeToString();
            string fileName = "Assets/" + model_.name + ".fbx";
            ExportToFbx(data, fileName);

            Debug.Log("saved to " + fileName);
            AssetDatabase.Refresh();
        }
    }
コード例 #2
0
    //在这里方法中就可以绘制面板。
    public override void OnInspectorGUI()
    {
        //得到Test对象
        Entery       entry         = (Entery)target;
        BundleLoader bundleLoader_ = entry.GetComponent <BundleLoader>();

        model_ = EditorGUILayout.ObjectField("Model", model_, typeof(GameObject), true) as GameObject;

        animClip_ = EditorGUILayout.ObjectField("AnimClip", animClip_, typeof(AnimationClip), true) as AnimationClip;

        if (GUILayout.Button("test"))
        {
            AnimationClip c = animClip_;
            Debug.Log(c.length);
            Debug.Log(c.name);
            Debug.Log(c.GetType());

            AnimationClipCurveData[] data = AnimationUtility.GetAllCurves(animClip_, true);
            Debug.Log(data.Length);

            EditorCurveBinding[] binds = AnimationUtility.GetCurveBindings(c);
            Debug.Log(binds.Length);
        }

        if (GUILayout.Button("load assetbundle"))
        {
            bundleLoader_.ReadFileList();
            bundleLoader_.LoadAssetBundle();
        }

        if (GUILayout.Button("导出文件"))
        {
            if (model_ == null)
            {
                Debug.LogError("model not set!");
                return;
            }

            MeshExpoter expoter = new MeshExpoter();
            Transform[] bones   = null;

            foreach (GameObject g in new GameObjectWalker(model_))
            {
                Mesh mesh = null;
                SkinnedMeshRenderer skinRenderer = g.GetComponent <SkinnedMeshRenderer>();

                if (skinRenderer != null)
                {
                    expoter.Export(skinRenderer);
                    mesh  = skinRenderer.sharedMesh;
                    bones = skinRenderer.bones;
                }

                //if(mesh == null)
                //{
                //    MeshFilter meshFilter = g.GetComponent<MeshFilter>();
                //    mesh = meshFilter != null ? meshFilter.mesh : null;
                //}

                if (mesh == null)
                {
                    continue;
                }
            }

            if (bones != null)
            {
                expoter.Export(bones);
            }

            if (animClip_ != null)
            {
                expoter.Export(animClip_);
            }

            //expoter.SaveToFile(OutputFile_ + model_.name + ".json");

            string data     = expoter.SerializeToString();
            string fileName = "Assets/" + model_.name + ".fbx";
            ExportToFbx(data, fileName);

            Debug.Log("saved to " + fileName);
            AssetDatabase.Refresh();
        }
    }