Ejemplo n.º 1
0
        public void BuildDecal(DecalBuildInfo decalInfo, string decalAltasName = "DecalDefault")
        {
            Material decalMat = null;

            if (decalInfo.decalMat == null)    //没有专门指定材质球
            {
                if (decalAltasName != "" && decalMatPool.ContainsKey(decalAltasName))
                {
                    decalMat = decalMatPool[decalAltasName];
                }
                else
                {
                    Shader decalShader = AssetBundleManager.GetShader("Decal/Default");
                    decalMat = new Material(decalShader);
                    decalMatPool.Add(decalAltasName, decalMat);
                }
            }
            else
            {
                decalMat = decalInfo.decalMat;
            }
            decalMat.mainTexture = decalInfo.decalSprite.texture;
            Decal decal = CreateDecalObj(decalInfo.decalPos, decalInfo.decalEulerAngle, decalInfo.decalScale);

            decal.SetMaterial(decalMat);
            decal.DecalSprite = decalInfo.decalSprite;

            //淡入淡出
            decal.decalFadeInTime  = decalInfo.decalFadeInTime;
            decal.decalFadeTime    = decalInfo.decalFadeTime;
            decal.decalFadeOutTime = decalInfo.decalFadeOutTime;

            BuildDecalMesh(decal);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 播放特效
        /// </summary>
        public override void PlayEffect(bool bEnemy, int HostEntityID, Vector3 srcPosition, Vector3 dstPosition, int mask = 0)
        {
            if (!PerformaceOk && !DebugMode)
            {
                Debug.LogError("特效超标,不予以播放,请特效检查特效预制体:" + gameObject.name);
                return;
            }

            //没有激活不播放
            if (bPlay || !gameObject.activeInHierarchy)
            {
                return;
            }

            GameObject go = getTargetCache();

            go.transform.SetParent(transform);
            go.transform.SetPosition(dstPosition);
            currDstObj = go;

            go = getTargetCache();
            go.transform.SetParent(transform);
            go.transform.SetPosition(srcPosition);
            currSrcObj = go;

            PlayEffect(bEnemy, HostEntityID, currSrcObj.transform, currDstObj.transform, mask);
            if (false && this.hasMarkDecal)
            {
                Vector3 decalDir = this.decalOffsetDir;
                decalDir.z = 0;
                Vector3 decalPosition = new Vector3();
                if (DecalSystem.Instance.CheckHitDecal(this.transform.position + decalDir, this.transform.forward, ref decalPosition))
                {
                    DecalBuildInfo info = new DecalBuildInfo();
                    info.decalPos          = decalPosition;
                    info.decalEulerAngle   = this.transform.eulerAngles;
                    info.decalEulerAngle.z = this.decalAngle;
                    info.decalScale        = this.decalScale;
                    info.decalFadeInTime   = this.decalFadeInEndTime - this.decalFadeInStartTime;
                    info.decalFadeTime     = this.decalFadeOutStartTime - this.decalFadeInEndTime;
                    info.decalFadeOutTime  = this.decalFadeOutEndTime - this.decalFadeOutStartTime;
                    info.decalMat          = this.decalMat;
                    info.decalSprite       = this.decalSprite;

                    if (this.decalDelayTime > 0)
                    {
                        DecalSystem.Instance.DelayBuildDecal(this, info, this.decalDelayTime);
                    }
                    else
                    {
                        DecalSystem.Instance.BuildDecal(info);
                    }
                }
            }
        }
Ejemplo n.º 3
0
 public void DelayBuildDecal(EffectNode node, DecalBuildInfo decalInfo, float delayTime, string decalAltasName = "DecalDefault")
 {
     this.delayTime = delayTime;
     if (delayTime > 0)
     {
         delayCoroutine = GameUtil.StartCoroutineHelper(node, DelayFunc(decalInfo, decalAltasName));
     }
     else
     {
         BuildDecal(decalInfo, decalAltasName);
     }
 }
Ejemplo n.º 4
0
        private IEnumerator DelayFunc(DecalBuildInfo decalInfo, string decalAltasName)
        {
            yield return(new WaitForSeconds(delayTime));

            BuildDecal(decalInfo, decalAltasName);
        }