void InitData(Camera camera) { Transform effectHolder = camera.gameObject.transform.Find("effect"); Vector3 position_effect = effectHolder.position; // 搜索路径下所有的特效 string[] paths = this.pathsSelect; if (paths == null) { var fabs = AssetDatabase.FindAssets("t:prefab", effectSearchPath); paths = new string[fabs.Length]; for (int i = 0; i < fabs.Length; i++) { string path = AssetDatabase.GUIDToAssetPath(fabs[i]); paths[i] = path; } } singleEffectEvlas = new SingleEffectEvla[paths.Length]; for (int i = 0; i < paths.Length; i++) { string path = paths[i]; float progress = (i + 1.0f) / paths.Length; EditorUtility.DisplayProgressBar("加载特效中,请耐心等待", "加载特效:" + path, progress); SingleEffectEvla singleEffectEvla = new SingleEffectEvla(_qualityIndex); singleEffectEvla.LoadEffect(path, position_effect); singleEffectEvlas[i] = singleEffectEvla; } EditorUtility.ClearProgressBar(); }
public int Compare(object e1, object e2) { SingleEffectEvla singleEffectEvla1 = e1 as SingleEffectEvla; SingleEffectEvla singleEffectEvla2 = e2 as SingleEffectEvla; if (singleEffectEvla1 == null || singleEffectEvla2 == null) { throw new ArgumentException("null argument"); } EffectEvlaData2 effectEvlaData1 = singleEffectEvla1.GetEffectEvlaData(); EffectEvlaData2 effectEvlaData2 = singleEffectEvla2.GetEffectEvlaData(); double pixRate1 = effectEvlaData1.GetPixRate(); double pixRate2 = effectEvlaData2.GetPixRate(); if (pixRate1 < pixRate2) { return(1); } if (pixRate1 > pixRate2) { return(-1); } return(0); }
public void PrintAll() { for (int i = 0; i < singleEffectEvlas.Length; i++) { SingleEffectEvla singleEffectEvla = singleEffectEvlas[i]; singleEffectEvla.Print(); } }
public void RecordOverDrawData(SingleEffectEvla singleEffectEvla) { long pixTotal = 0; long pixActualDraw = 0; GetCameraOverDrawData(out pixTotal, out pixActualDraw); // 往数据+1 singleEffectEvla.UpdateOneData(pixTotal, pixActualDraw); }
public string GetEffectPathShowNow() { SingleEffectEvla singleEffectEvla = GetSingleEffectEvlaNow(); if (singleEffectEvla != null) { return(singleEffectEvla.GetEffectEvlaData().effectPath); } return("没有显示的特效"); }
void CheckAndSaveTexture(SingleEffectEvla singleEffectEvla, bool isAutoSavePic, int maxOverdrawSaveNumber) { if (!isAutoSavePic) { return; } // 获取data EffectEvlaData2 effectEvlaData2 = singleEffectEvla.GetEffectEvlaData(); double overdrawRate = effectEvlaData2.GetPixRate(); if (overdrawRate < maxOverdrawSaveNumber) { return; } CSVEffectEvlaHelper cSVEffectEvlaHelper = CSVEffectEvlaHelper.GetInstance(); string directoryPath = cSVEffectEvlaHelper.GetDirectoryPath(); FileInfo fi = new FileInfo(directoryPath); if (!fi.Directory.Exists) { fi.Directory.Create(); } string fileName = string.Format("{0}/{1}{2}.png", directoryPath, effectEvlaData2.GetEffectName(), effectEvlaData2.quality); RenderTexture activeTextrue = RenderTexture.active; RenderTexture rt = new RenderTexture(256, 256, 0, RenderTextureFormat.ARGB32); _camera.targetTexture = rt; _camera.Render(); RenderTexture.active = rt; Texture2D png = new Texture2D(rt.width, rt.height, TextureFormat.ARGB32, false); png.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0); byte[] bytes = png.EncodeToPNG(); FileStream file = File.Open(fileName, FileMode.Create); BinaryWriter writer = new BinaryWriter(file); writer.Write(bytes); file.Close(); RenderTexture.active = activeTextrue; Texture2D.DestroyImmediate(png); rt.Release(); _camera.targetTexture = null; }
public void Release() { if (isRealese) { return; } isRealese = true; for (int i = 0; i < singleEffectEvlas.Length; i++) { SingleEffectEvla singleEffectEvla = singleEffectEvlas[i]; singleEffectEvla.UnLoadEffect(); } singleEffectEvlas = null; CSVEffectEvlaHelper.GetInstance(); CSVEffectEvlaHelper.DestroyInstance(); }
public void SaveData() { // 排序 Array.Sort(singleEffectEvlas, new SingleEffectEvlaComparer2()); for (int i = 0; i < singleEffectEvlas.Length; i++) { SingleEffectEvla singleEffectEvla = singleEffectEvlas[i]; EffectEvlaData2 effectEvlaData2 = singleEffectEvla.GetEffectEvlaData(); // pixrate大于1.5的才记录 if (effectEvlaData2.GetPixRate() >= 1.5f) { CSVEffectEvlaHelper cSVEffectEvlaHelper = CSVEffectEvlaHelper.GetInstance(); cSVEffectEvlaHelper.WriteData(singleEffectEvla.GetEffectEvlaDatas()); cSVEffectEvlaHelper.Flush(); } } }
public bool Update(bool isAutoSavePic, int maxOverdrawSaveNumber) { // 当前effect SingleEffectEvla singleEffectEvla = GetSingleEffectEvlaNow(); if (singleEffectEvla == null) { time = 0; _arrayIndex = 0; _qualityIndex = _qualityIndex - 1; if (_qualityIndex >= 1) { Debug.Log("品质改变" + GetQualityChecking()); ChangeQuality(Qualitys[_qualityIndex - 1]); foreach (SingleEffectEvla sEffectEvla in singleEffectEvlas) { sEffectEvla.ChangeQuality(_qualityIndex); } return(true); } // 保存csv try { SaveData(); } catch (Exception e) { Debug.LogError(e.ToString()); } Debug.Log("运行所有特效完毕,已保存数据"); return(false); } time += Time.deltaTime; saveTime += Time.deltaTime; // singleEffectEvla.Simsimulate(time); // 记录本次数据 if (saveTime >= saveTimeMax) { RecordOverDrawData(singleEffectEvla); saveTime = 0; } // 超过总时间,自动跳到下一个effect if (time > stopTime) { time = 0; _arrayIndex++; // 因为取的是平均值,所以可以最后一帧才判断截图 CheckAndSaveTexture(singleEffectEvla, isAutoSavePic, maxOverdrawSaveNumber); singleEffectEvla.Stop(); } return(true); }
public void InitData() { singleEffectEvla = new SingleEffectEvla(1); }
public EffectEvla(Camera camera) { SetCamera(camera); rt = new RenderTexture(rtSizeWidth, rtSizeHeight, 0, RenderTextureFormat.ARGB32); singleEffectEvla = new SingleEffectEvla(1); }