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); }
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); }
public virtual void OnEnable() { m_Component = (AssetBundleTools)target; }