Beispiel #1
0
    void delayCall()
    {
        ParticlePrefabCache cache;

        if (!prefabCaches.TryGetValue(transCache.GetInstanceID(), out cache))
        {
            cache = new ParticlePrefabCache();
            cache.renderCache.AddRange(transCache.GetComponentsInChildren <Renderer>(true));
            prefabCaches.Add(transCache.GetInstanceID(), cache);
        }
        for (int j = 0; j < cache.renderCache.Count; j++)
        {
            cache.renderCache[j].material.renderQueue = renderQ;
        }
    }
Beispiel #2
0
    void SetPrefabInfo()
    {
        if (spawnedGoes == null)
        {
            return;
        }
        for (int i = 0; i < spawnedGoes.Count; ++i)
        {
            var go = spawnedGoes[i];
            if (go == null)
            {
                continue;
            }
            go.SetActive(true);
            var trans = go.transform;
            //NGUITools.SetLayer(go, effectLayer);

            ParticlePrefabCache cache;
            if (!prefabCaches.TryGetValue(go.GetInstanceID(), out cache))
            {
                cache = new ParticlePrefabCache();
                cache.psCache.AddRange(trans.GetComponentsInChildren <ParticleSystem>(true));
                cache.renderCache.AddRange(trans.GetComponentsInChildren <Renderer>(true));
                cache.psrCache.AddRange(trans.GetComponentsInChildren <ParticleSystemRenderer>(true));
                prefabCaches.Add(go.GetInstanceID(), cache);

                for (int k = 0; k < cache.renderCache.Count; k++)
                {
                    cache.shaderNameCache.Add(cache.renderCache[k].material.shader.name);
                }
            }
            for (int k = 0; k < cache.psCache.Count; k++)
            {
                cache.psCache[k].transform.localScale = Vector3.one;
            }
            if (renderQ > 0)
            {
                //UIRoot uiRoot = NGUITools.GetRoot(gameObject).GetComponent<UIRoot>();
                //if (!uiRoot) continue;
                //for (int k = 0; k < cache.psCache.Count; k++)
                //{
                //    cache.psCache[k].transform.localScale = uiRoot.transform.localScale * scaleFactor;
                //}

                for (int j = 0; j < cache.renderCache.Count; j++)
                {
                    if (changeToClipShader)
                    {
                        cache.renderCache[j].material.shader = Shader.Find("Custom/Particle Texture Area Clip");
                    }
                    else
                    {
                        cache.renderCache[j].material.shader = Shader.Find(cache.shaderNameCache[j]);
                    }

                    cache.renderCache[j].material.renderQueue = renderQ;
                    if (gameObject.layer == LayerMask.NameToLayer("UI"))
                    {
                        cache.renderCache[j].gameObject.layer = LayerMask.NameToLayer("UI");
                    }
                    else
                    {
                        cache.renderCache[j].gameObject.layer = LayerMask.NameToLayer("UIModel");
                    }
                }

                for (int j = 0; j < cache.psrCache.Count; ++j)
                {
                    if (cache.psrCache[j].sortingOrder > 0)
                    {
                        cache.psrCache[j].sortingFudge = cache.psrCache[j].sortingOrder * -100;
                        cache.psrCache[j].sortingOrder = 0;
                    }
                }
            }
        }
        Done = true;
    }