Example #1
0
    void OnWizardCreate()
    {
        if (obj == null)
        {
            EditorUtility.DisplayDialog("错误警告", "必须拖入物体", "OK");

            return;
        }

        Mesh       resultMesh;
        GameObject resultObj;
        Material   resultMaterial;

        GameObjectTools.MeshAddOutline(obj, lightningTexture, outline, out resultMesh, out resultObj, out resultMaterial, fixNormals);

        string path = EditorUtility.SaveFilePanelInProject("保存文件", "", "prefab", "aaaa");

        int    start    = path.LastIndexOf("/");
        int    end      = path.LastIndexOf(".");
        string saveName = path.Substring(start + 1, end - start - 1);

        string qian = path.Substring(0, start + 1);

        AssetDatabase.CreateAsset(resultMesh, qian + saveName + "_mesh.asset");

        AssetDatabase.CreateAsset(resultMaterial, qian + saveName + "_mat.mat");

        PrefabUtility.CreatePrefab(qian + saveName + ".prefab", resultObj);

        AssetBundleTools.SetAssetBundleName(qian + saveName + ".prefab", saveName);

        GameObject.DestroyImmediate(resultObj);
    }
Example #2
0
    public static void Start()
    {
        GameObject go = Selection.activeGameObject;

        GameObject prefab = GameObject.Instantiate(go);

        LightmapData[] datas = LightmapSettings.lightmaps;

        Renderer[] renderers = go.GetComponentsInChildren <Renderer>();

        foreach (Renderer renderer in renderers)
        {
            if (renderer.lightmapIndex != -1)
            {
                GameObject tg = PublicTools.FindChild(prefab, renderer.gameObject.name);

                LightmapGameObject ll = tg.AddComponent <LightmapGameObject>();

                ll.lightmapIndex = renderer.lightmapIndex;

                ll.lightmapScaleOffset = renderer.lightmapScaleOffset;
            }
        }

        Scene scene = prefab.AddComponent <Scene>();

        scene.farTextures  = new Texture2D[datas.Length];
        scene.nearTextures = new Texture2D[datas.Length];

        for (int i = 0; i < datas.Length; i++)
        {
            scene.farTextures[i]  = datas[i].lightmapFar;
            scene.nearTextures[i] = datas[i].lightmapNear;
        }

        scene.fieldOfView = Camera.main.fieldOfView;

        scene.ambientLight     = RenderSettings.ambientLight;
        scene.ambientIntensity = RenderSettings.ambientIntensity;

        scene.fog              = RenderSettings.fog;
        scene.fogColor         = RenderSettings.fogColor;
        scene.fogStartDistance = RenderSettings.fogStartDistance;
        scene.fogEndDistance   = RenderSettings.fogEndDistance;

        string path = "Assets/Arts/map/" + go.name + ".prefab";

        PrefabUtility.CreatePrefab(path, prefab);

        GameObject.DestroyImmediate(prefab);

        AssetBundleTools.SetAssetBundleName(path, go.name);

        SuperDebug.Log("场景Prefab构造完成!");
    }
    void OnWizardCreate()
    {
        if (skeleton == null)
        {
            EditorUtility.DisplayDialog("错误警告", "必须拖入骨骼文件!!!", "OK");

            return;
        }

        if (parts.Length == 0 || parts[0] == null)
        {
            EditorUtility.DisplayDialog("错误警告", "至少有一个皮肤文件!!!", "OK");

            return;
        }

//		if (animatorController == null) {
//
//			EditorUtility.DisplayDialog("错误警告","必须拖入动作文件!!!","OK");
//
//			return;
//		}

        List <GameObject> importParts = new List <GameObject> ();

        for (int i = 0; i < parts.Length; i++)
        {
            if (parts[i] != null)
            {
                GameObject tmpObj = GameObject.Instantiate(parts[i]);

                tmpObj.name = parts[i].name;

                importParts.Add(tmpObj);
            }
        }

        List <GameObject> importReplaceParts = new List <GameObject> ();

        for (int i = 0; i < replaceParts.Length; i++)
        {
            if (replaceParts[i] != null)
            {
                GameObject tmpObj = GameObject.Instantiate(replaceParts[i]);

                tmpObj.name = replaceParts[i].name;

                importReplaceParts.Add(tmpObj);
            }
        }

        Material resultMaterial;
        Mesh     resultMesh;

        GameObject resultObj = GameObject.Instantiate(skeleton);

        resultObj.name = skeleton.name;        //这行代码不能删  否则骨骼运动就停止了

        GameObjectTools.CombineMeshs(ref resultObj, importParts, importReplaceParts, animatorController, outline, out resultMesh, out resultMaterial, addCollider, fixNormals);

        string path = EditorUtility.SaveFilePanelInProject("保存文件", "", "prefab", "aaaa");

        if (!string.IsNullOrEmpty(path))
        {
            int    start    = path.LastIndexOf("/");
            int    end      = path.LastIndexOf(".");
            string saveName = path.Substring(start + 1, end - start - 1);

            string qian = path.Substring(0, start + 1);

            AssetDatabase.CreateAsset(resultMesh, qian + saveName + "_mesh.asset");

            AssetDatabase.CreateAsset(resultMaterial, qian + saveName + "_mat.mat");

            PrefabUtility.CreatePrefab(qian + saveName + ".prefab", resultObj);

            AssetBundleTools.SetAssetBundleName(qian + saveName + ".prefab", saveName);
        }

        for (int i = 0; i < importParts.Count; i++)
        {
            GameObject.DestroyImmediate(importParts [i]);
        }

        for (int i = 0; i < importReplaceParts.Count; i++)
        {
            GameObject.DestroyImmediate(importReplaceParts [i]);
        }

        GameObject.DestroyImmediate(resultObj);
    }
Example #4
0
 public virtual void OnEnable()
 {
     m_Component = (AssetBundleTools)target;
 }