コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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();
        }
コード例 #3
0
ファイル: EffectManager.cs プロジェクト: tuita520/u3dmmorpg
        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);
        }
コード例 #4
0
 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");
 }
コード例 #5
0
ファイル: EffectManager.cs プロジェクト: pikaqiufk/Client
    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);
    }
コード例 #6
0
    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);
    }