/// <summary> /// 从队列中获取一个可用的特效 /// </summary> /// <returns></returns> private GameObject GetEffectObject() { if (m_EffectObjs.Count != 0) { GameObject obj = m_EffectObjs.Dequeue(); if (obj != null) { obj.SetActive(true); EffectRecord record2 = new EffectRecord(obj, m_MaxAliveTime); m_AllShowingEffectObj.Add(record2); return(obj); } } //获取之前生成的Effect GameObject go = new GameObject("特效");// ResourceMgr.instance.Instantiate(EffectResPath.ScreenEffectItemPath, m_UICamera.transform); go.transform.SetParent(m_UICamera.transform); go.transform.localPosition = m_UICamera.transform.InverseTransformPoint(m_MouseCanvasPostion);; go.transform.localScale = Vector3.one; EffectRecord record = new EffectRecord(go, m_MaxAliveTime); m_AllShowingEffectObj.Add(record); return(go); }
static void InitEffect() { List <string> tmpPaths = EditorResHelper.GetAllResourcePath(Effect_Path, false); foreach (string path in tmpPaths) { string tmpPath = path.Replace('\\', '/'); GameObject tmpGo = AssetDatabase.LoadAssetAtPath <GameObject>(tmpPath); if (null == tmpGo) { continue; } EffectRecord tmpEffectRecord = tmpGo.GetComponent <EffectRecord>(); if (null == tmpEffectRecord) { tmpEffectRecord = tmpGo.AddComponent <EffectRecord>(); } tmpEffectRecord.Init(); EditorUtility.SetDirty(tmpGo); } AssetDatabase.Refresh(); }
public void CreateEffect(EffectRecord tableData, ObjCharacter character, Vector3?pos = null, Action <EffectController, ulong> loadOverCallback = null, Action <EffectController, ulong> playOverCallback = null, bool shake = true, bool firstPriority = false) { if (!ShouldShowEffect(character.GetObjId())) { return; } if (character.GetObjType() != OBJ.TYPE.MYPLAYER && mDict.Count > GameSetting.Instance.MaxVisibleModelCount) { return; } var mount = character.GetMountPoint(tableData.MountPoint); if (mount == null && character.GetModel() != null && character.State != ObjState.LoadingResource) { Logger.Warn("因为模型Id={2} 挂载点{0}找不到了,所以特效{1}没有播放。", tableData.MountPoint, tableData.Id, character.ModelId); return; } CreateEffect(tableData, mount, character.TargetDirection, character.GetLayerForEffect(), pos, loadOverCallback, playOverCallback, firstPriority, false, shake); }
private void Start() { player = GameObject.FindGameObjectWithTag("Player"); playerSprite = player.GetComponent <SpriteRenderer>(); god = GameObject.Find("gOD").GetComponent <NewGodScript>(); print(god.playerRecord); print(god.playerRecord.effectsRecord); record = god.playerRecord.effectsRecord.EffectWithName("Invisible"); }
public void CreateEffect(EffectRecord tableData, Transform parent, Vector3 dir, int layer = 0, Vector3?pos = null, Action <EffectController, ulong> loadOverCallback = null, Action <EffectController, ulong> playOverCallback = null, bool firstPriority = false, bool bPrepareResource = false, bool camShake = true) { ComplexObjectPool.NewObject(tableData.Path, obj => { if (obj == null) { return; } var Id = GenerateNextId(); var p = new Vector3(tableData.X, tableData.Y, tableData.Z); var rotation = Quaternion.Euler(new Vector3(tableData.RotationX, tableData.RotationY, tableData.RotationZ)); var objTransform = obj.transform; if (null != parent) { objTransform.parent = parent; } else { objTransform.parent = GameLogic.Instance.Scene.EffectRoot.transform; } if (tableData.IsZoom != 0) { objTransform.localScale = Vector3.one; } else { if (parent != null) { var v = parent.transform.lossyScale; objTransform.localScale = new Vector3(1.0f / v.x, 1.0f / v.y, 1.0f / v.z); } else { objTransform.localScale = Vector3.one; } } objTransform.localPosition = p; objTransform.localRotation = rotation; obj.name = "Effect_" + Id.ToString() + "_" + Path.GetFileNameWithoutExtension(tableData.Path); obj.SetLayerRecursive(layer); ComplexObjectPool.SetActive(obj, false); { //根据setting设置特效显示 if (GameSetting.Instance.GameQualityLevel < 3) { { // foreach(var data in EnumGameObjectRecursive(obj)) var __enumerator5 = (EnumGameObjectRecursive(obj)).GetEnumerator(); while (__enumerator5.MoveNext()) { var data = __enumerator5.Current; { if (data.CompareTag("LowEffectParticle")) { data.SetActive(false); } } } } } } var effect = obj.GetComponent <EffectController>(); if (effect == null) { effect = obj.AddComponent <EffectController>(); effect.InitLoop(); } effect.Id = Id; effect.Delay = tableData.DelayTime; effect.Duration = tableData.Duration == 0 ? float.MaxValue : tableData.Duration; effect.Follow = tableData.Follow != 0; effect.PlayOverCallback = playOverCallback; effect.LoopTime = tableData.LoopTime; effect.State = EffectState.WaitToFire; effect.Dir = dir; effect.Pos = pos; effect.trans = effect.transform; mDict.Add(effect.Id, effect); if (null != loadOverCallback) { loadOverCallback(effect, Id); } if (camShake) { var tableDataShakeDelayTimeLength0 = tableData.ShakeDelayTime.Length; for (var i = 0; i < tableDataShakeDelayTimeLength0; i++) { if (tableData.ShakeDelayTime[i] != -1) { //创建人物时播放角色动画还没有GameLogic if (null != GameLogic.Instance) { var shake = GameLogic.Instance.MainCamera.GetComponent <CameraShake>(); if (null != shake && shake.gameObject.active && (!bPrepareResource) && GameLogic.Instance.MainCamera.enabled) { shake.StartCoroutine(ShakeCamera(shake, tableData.ShakeDelayTime[i] / 1000.0f, tableData.ShakeMagnitude[i], (int)tableData.ShakeCount[i], tableData.ShakeSpeed[i], tableData.ShakeReduction[i], tableData.ShakeType[i])); } } } } } }, null, null, false, firstPriority, false); }
public static void SetDrawObjects() { // 画像の読み込み DrawObject scr = new DrawObject("scr.png", DrawObject.EnumAlign.RIGHTCENTER, 2, 1); //スクラッチの左右向き緑 DrawObject scrbad = new DrawObject("scrbad.png", DrawObject.EnumAlign.RIGHTCENTER, 2, 1); //スクラッチの左右向き緑 DrawObject scrcore = new DrawObject("scrcore.png", DrawObject.EnumAlign.CENTERCENTER); //スクラッチの左右向き緑 DrawObject bar = new DrawObject("bar.png", DrawObject.EnumAlign.CENTERBOTTOM); DrawObject baroff = new DrawObject("baroff.png", DrawObject.EnumAlign.CENTERBOTTOM); DrawObject disk = new DrawObject("disk.png", DrawObject.EnumAlign.CENTERCENTER); DrawObject light = new DrawObject("disklight.png", DrawObject.EnumAlign.CENTERCENTER); DrawObject NGXMark = new DrawObject("xDisk.png", DrawObject.EnumAlign.CENTERCENTER); DrawObject disklightl = new DrawObject("disklightl.png", DrawObject.EnumAlign.CENTERCENTER); DrawObject disklightr = new DrawObject("disklightr.png", DrawObject.EnumAlign.CENTERCENTER); DrawObject cutinL = new DrawObject("cutinL.png", DrawObject.EnumAlign.CENTERBOTTOM); DrawObject cutinR = new DrawObject("cutinR.png", DrawObject.EnumAlign.CENTERBOTTOM); DrawObject diskshadowL = new DrawObject("diskshadowL.png", DrawObject.EnumAlign.CENTERBOTTOM, 1, 2); //アクティブ皿の裏ののびーる赤と紫 DrawObject diskshadowR = new DrawObject("diskshadowR.png", DrawObject.EnumAlign.CENTERBOTTOM, 1, 2); //アクティブ皿の裏ののびーる赤と紫 DrawObject barL = new DrawObject("playlinel.png", DrawObject.EnumAlign.CENTERBOTTOM); DrawObject barR = new DrawObject("playliner.png", DrawObject.EnumAlign.CENTERBOTTOM); DrawObject cue = new DrawObject("cue.png", DrawObject.EnumAlign.CENTERCENTER, 1, 36); DrawObject cueL = new DrawObject("cueL.png", DrawObject.EnumAlign.CENTERCENTER, 1, 37); DrawObject cueR = new DrawObject("cueR.png", DrawObject.EnumAlign.CENTERCENTER, 1, 37); DrawObject fader = new DrawObject("fader.png", DrawObject.EnumAlign.CENTERBOTTOM); DrawObject faderC = new DrawObject("faderC.png", DrawObject.EnumAlign.CENTERBOTTOM); DrawObject faderL = new DrawObject("faderL.png", DrawObject.EnumAlign.CENTERBOTTOM); DrawObject faderR = new DrawObject("faderR.png", DrawObject.EnumAlign.CENTERBOTTOM); DrawObject particle = new DrawObject("star.png", DrawObject.EnumAlign.CENTERCENTER, 1, 3); DrawObject frame = new DrawObject("frame.png", DrawObject.EnumAlign.LEFTTOP); DrawObject rainbow = new DrawObject("Rainbow.png", DrawObject.EnumAlign.LEFTTOP, 1, 8); DrawObject barBeat = new DrawObject("barBeat.png", DrawObject.EnumAlign.LEFTTOP); DrawObject barMeasure = new DrawObject("barMeasure.png", DrawObject.EnumAlign.LEFTTOP); DrawObject COOL = new DrawObject("!!!COOL!!!.png", DrawObject.EnumAlign.CENTERCENTER); DrawObject PERFECT = new DrawObject("PERFECT.png", DrawObject.EnumAlign.CENTERCENTER); DrawObject GREAT = new DrawObject("GREAT.png", DrawObject.EnumAlign.CENTERCENTER); DrawObject GOOD = new DrawObject("GOOD.png", DrawObject.EnumAlign.CENTERCENTER); DrawObject BAD = new DrawObject("BAD.png", DrawObject.EnumAlign.CENTERCENTER); DiscQueCutData.SetDrawObject(disk, cue, null, light, NGXMark); DiscQueCutData.SetLDrawObject(cueL, diskshadowL, cutinL, barL); DiscQueCutData.SetRDrawObject(cueR, diskshadowR, cutinR, barR); ScratchUnit.SetDrawObject(scr, scrbad, scrcore, bar, baroff); EffectParticle.SetDrawObject(particle); EffectJudge.SetDrawObject(COOL, PERFECT, GREAT, GOOD, BAD); EffectRecord.SetDrawObject(disklightl, disklightr); drawfader.setdrawobject(fader, faderC, faderL, faderR); DrawLowFrame.SetDrawObject(frame, rainbow); DrawBeatline.SetDrawObject(barBeat, barMeasure); }