public override void OnInspectorGUI() { base.OnInspectorGUI(); GUILayout.BeginVertical("Box"); GUILayout.Label("Adornings Operations:"); AdorningManager am = (AdorningManager)target; if (am == null) { return; } GUILayout.BeginVertical("Box"); GUILayout.Label("Adornings Parameters:"); GUILayout.BeginHorizontal("Box"); am.VisFactor = EditorGUILayout.Slider("VisFactor", am.VisFactor, 0.0f, 1.0f); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal("Box"); am.FadeTime = EditorGUILayout.Slider("FadeTime", am.FadeTime, 0.0f, 1.0f); GUILayout.EndHorizontal(); GUILayout.EndVertical(); }
public void OnFinish() { double loadSceneFinishTime = DateTime.Now.Ticks; ResourceEx.Collect(); AdorningManager.Init(); GrassAdorningManager.Init(); ImageSetting.OnSceneLoadFinish(); ImageSetting.Apply(true); //ImageSetting.ApplySceneImageSetting(SceneResInfoManager.CurrentActiveInstance, true); LightingEffectFactory.DisableDeadEffect(); // 场景地图资源加载完后开始播放背景音乐 //SoundManager.CreateUISound(StageManager.Instance.getSoundID()); if (SoldierCamera.MainInstance() != null) { SoldierCamera.MainInstance <SoldierCamera>().updateCameraParam(m_curMapID, -1); } loadSceneFinishTime = DateTime.Now.Ticks - loadSceneFinishTime; loadSceneFinishTime *= 0.0000001f; Debug.Log("场景加载完成阶段,耗时:" + loadSceneFinishTime); double time = DateTime.Now.Ticks - sceneLoadBegainTime; time *= 0.0000001f; Debug.Log("SceneLoad::DoTask 资源加载成功,场景名称 = " + m_SceneName + ",耗时:" + time); InvokeSceneLoadFinishEvent(m_SceneName); StartCoroutine(WaitTransitionFinish()); InvokeSceneTransitionStartEvent(m_SceneName); }
static void ImportFun(bool AdorningAssetBundleBuild, BuildTarget platform) { if (Application.isPlaying || !Application.isEditor) { Debug.LogError("Import Adorning Operation can not run in runtime, please do it in editor mode"); } string scenename = "adorning_" + Path.GetFileNameWithoutExtension(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene().name); string absfolder = Application.dataPath + "/UnityScene/" + scenename; string folder = "Assets/UnityScene/" + scenename; if (Directory.Exists(absfolder) == false) { Directory.CreateDirectory(absfolder); } string[] abssubfolders = Directory.GetDirectories(absfolder); foreach (string abssubfolder in abssubfolders) { string amname = Path.GetFileName(abssubfolder); string subfolder = folder + "/" + amname; GameObject goam = GameObject.Find(amname); if (goam == null) { continue; } AdorningManager am = goam.GetComponent <AdorningManager>(); if (am == null) { continue; } if (AdorningAssetBundleBuild) { string[] absfiles = Directory.GetFiles(abssubfolder, "*.unity3d"); int nGroup = absfiles.Length; for (int iGroup = 0; iGroup < nGroup; iGroup++) { string absfile = absfiles[iGroup]; string file = subfolder + "/" + Path.GetFileName(absfile); if (File.Exists(absfile) == false) { continue; } byte[] data = File.ReadAllBytes(absfile); if (data == null || data.Length <= 0) { continue; } AssetBundle assetbundle = AssetBundle.LoadFromMemory(data); if (assetbundle == null) { continue; } GameObject prefab = (GameObject)assetbundle.mainAsset; if (prefab == null) { continue; } data = null; System.GC.Collect(); GameObject groupgo = GameObject.Instantiate(prefab); if (groupgo == null) { continue; } groupgo.name = prefab.name; Vector3 pos = groupgo.transform.localPosition; Vector3 angle = groupgo.transform.localEulerAngles; Vector3 scale = groupgo.transform.localScale; groupgo.transform.parent = goam.transform; groupgo.transform.localPosition = pos; groupgo.transform.localEulerAngles = angle; groupgo.transform.localScale = scale; prefab = null; assetbundle.Unload(false); float fProgress = (float)iGroup / (float)nGroup; EditorUtility.DisplayProgressBar("Import Adorning: " + amname, "Import AssetBundle: " + groupgo.name + ".unity3d...", fProgress); } } else { string[] absfiles = Directory.GetFiles(abssubfolder, "*.prefab"); int nGroup = absfiles.Length; for (int iGroup = 0; iGroup < nGroup; iGroup++) { string absfile = absfiles[iGroup]; string file = subfolder + "/" + Path.GetFileName(absfile); if (File.Exists(absfile) == false) { continue; } GameObject prefab = (GameObject)AssetDatabase.LoadAssetAtPath(file, typeof(GameObject)); if (prefab == null) { continue; } GameObject groupgo = (GameObject)PrefabUtility.InstantiatePrefab(prefab); if (groupgo == null) { continue; } Vector3 pos = groupgo.transform.localPosition; Vector3 angle = groupgo.transform.localEulerAngles; Vector3 scale = groupgo.transform.localScale; groupgo.transform.parent = goam.transform; groupgo.transform.localPosition = pos; groupgo.transform.localEulerAngles = angle; groupgo.transform.localScale = scale; float fProgress = (float)iGroup / (float)nGroup; EditorUtility.DisplayProgressBar("Import Adorning: " + amname, "Import Prefab: " + groupgo.name + ".prefab...", fProgress); } } } EditorUtility.ClearProgressBar(); }
public static void Init() { vmin = new Vector3(9999999.0f, 9999999.0f, 9999999.0f); vmax = -vmin; foreach (string scenegroupname in scenegroupnames) { GameObject goscene = GameObject.Find(scenegroupname); if (goscene != null) { Renderer[] rs = goscene.GetComponentsInChildren <Renderer>(); //int n = goscene.transform.childCount; //for (int i = 0; i < n; i++) foreach (Renderer r in rs) { //Transform tchild = goscene.transform.GetChild(i); Vector3 pos = r.transform.position; MeshRenderer mr = r.gameObject.GetComponent <MeshRenderer>(); //要有中心轴的一定是meshrender,粒子系统有renderer却非meshrender if (mr != null && mr.bounds != null) { pos = mr.bounds.center; } if (pos.x > vmax.x) { vmax.x = pos.x; } if (pos.y > vmax.y) { vmax.y = pos.y; } if (pos.z > vmax.z) { vmax.z = pos.z; } if (pos.x < vmin.x) { vmin.x = pos.x; } if (pos.y < vmin.y) { vmin.y = pos.y; } if (pos.z < vmin.z) { vmin.z = pos.z; } } } } vcenter = (vmax + vmin) * 0.5f; vmax = (vmax - vcenter) * 1.1f + vcenter; vmin = (vmin - vcenter) * 1.1f + vcenter; vsize = vmax - vmin; float groupstride = (1 + groupsize * 2); vdistance = vsize / groupstride; Instances.Clear(); foreach (string scenegroupname in scenegroupnames) { GameObject goscene = GameObject.Find(scenegroupname); if (goscene != null) { AdorningManager am = goscene.GetComponent <AdorningManager>(); if (am == null) { am = goscene.AddComponent <AdorningManager>(); am.Build(); } if (am != null) { Instances.Add(am); } if (scenegroupname == "ScenesEffects" || scenegroupname == "ScenesEffect") { am.FadeEnable = false; } if (scenegroupname == "ScenesEffects" || scenegroupname == "ScenesEffect" || scenegroupname == "ScenesTree") { am.VisFactor = 0.25f; am.supportphysic = false; } else { am.VisFactor = 0.35f; am.supportphysic = true; } } } }
// [MenuItem("Tools/Adorning/Build")] static void Build() { AdorningManager.Init(); }