Beispiel #1
0
    private void reloadLight()
    {
        var LightingObjects = GameObject.FindGameObjectsWithTag("Lighting");
        // Debug.Log("Mask Update LightingObjects.Count=" + LightingObjects.Length);
        List <Vector4> pointLights = new List <Vector4>();

        int            pointCount = 0;
        List <Vector4> lineLights = new List <Vector4>();

        int lineCount = 0;
        // Debug.Log("Screen.width=" + Screen.width + ",Screen.height=" + Screen.height);
        var asW = Screen.width / 1080f;
        var asH = Screen.height / 1920f;

        foreach (var obj in LightingObjects)
        {
            Shining sh = obj.gameObject.GetComponent <Shining>();
            if (sh.LightShape == 1 && sh.P1 > 0)
            {
                // Debug.Log("Lighting if Object Name=" + obj.name);
                pointLights.Add(sh.GetPointLightInfo());
                pointCount++;
            }
            else if (sh.LightShape == 2 && sh.P1 > 0)
            {
                // Debug.Log("Lighting else if Object Name=" + obj.name);
                foreach (var e in sh.GetLineLightList())
                {
                    // Debug.Log("Lighting Object Name=" + obj.name + ",e=" + e);
                    lineLights.Add(e);
                    lineCount++;
                }
            }
            else
            {
                // Debug.Log("Lighting else Object Name=" + obj.name);
            }
        }
        for (int i = pointCount; i < 30; i++)
        {
            pointLights.Add(new Vector4());
        }

        for (int i = lineCount; i < 90; i++)
        {
            lineLights.Add(new Vector4());
        }
        spriteRenderer.material.SetFloat("_Alpha", spriteRenderer.color.a);

        spriteRenderer.material.SetVectorArray("_LightingArr", pointLights);
        spriteRenderer.material.SetFloat("_LightingArrLen", pointCount);
        spriteRenderer.material.SetFloat("_LineLightingArrLen", lineCount);
        if (lineLights.Count > 0)
        {
            // Debug.Log("Lighting lineLights.Count=" + lineLights.Count + ",lineCount=" + lineCount);
            spriteRenderer.material.SetVectorArray("_LineLightingArr", lineLights);
        }
    }