Пример #1
0
        private Sprite GenerateGradientSprite(GradientSchemeScriptableObject colorScheme, int width = 128, int height = 128)
        {
            var gradient  = new Gradient();
            var colorKeys = new GradientColorKey[2];

            colorKeys[0]       = new GradientColorKey(colorScheme.SkyboxColor2, 1f);
            colorKeys[1]       = new GradientColorKey(colorScheme.SkyboxColor1, 0f);
            gradient.colorKeys = colorKeys;

            var gradientTex = new Texture2D(width, height, TextureFormat.ARGB32, false);

            gradientTex.filterMode = FilterMode.Bilinear;

            var inv = 1f / (width - 1);

            for (int y = 0; y < height; y++)
            {
                for (int x = 0; x < width; x++)
                {
                    var t     = x * inv;
                    var color = gradient.Evaluate(t);
                    gradientTex.SetPixel(y, x, color);
                }
            }
            gradientTex.Apply();
            var sprite = Sprite.Create(gradientTex, new Rect(0f, 0f, width, height), new Vector2(0.5f, 0.5f), 100f);

            return(sprite);
        }
Пример #2
0
 public void SetImageAndPrice(Sprite sprite, GradientSchemeScriptableObject gradientScheme, UnityEngine.Events.UnityAction actionOnClick)
 {
     this.gradientScheme = gradientScheme;
     elementImage.sprite = sprite;
     priceField.text     = gradientScheme.Price.ToString();
     elementImage.GetComponent <Button>().onClick.AddListener(actionOnClick);
     Deselect();
 }
Пример #3
0
        private void CreateShopElement(GradientSchemeScriptableObject gradientScheme)
        {
            var shopElementGameObject = Instantiate(elementPrefab, Vector2.zero, Quaternion.identity, elementsTransform);
            var shopElementComponent  = shopElementGameObject.GetComponent <ShopElement>();
            var sprite       = GenerateGradientSprite(gradientScheme);
            var buttonAction = new UnityEngine.Events.UnityAction(() => SelectShopElement(gradientScheme.ID));

            shopElementComponent.SetImageAndPrice(sprite, gradientScheme, buttonAction);
            shopElements.Add(gradientScheme.ID, shopElementComponent);
        }
Пример #4
0
        public static void SetColorScehem(GradientSchemeScriptableObject colorScheme)
        {
            RenderSettings.ambientSkyColor     = colorScheme.SkyColor;
            RenderSettings.ambientEquatorColor = colorScheme.EquatorColor;
            RenderSettings.ambientGroundColor  = colorScheme.GroundColor;
            RenderSettings.fogColor            = colorScheme.FogColor;
            var skybox = new Material(RenderSettings.skybox);

            skybox.SetColor("_Color1", colorScheme.SkyboxColor1);
            skybox.SetColor("_Color2", colorScheme.SkyboxColor2);
            RenderSettings.skybox = skybox;
            DynamicGI.UpdateEnvironment();
            #if UNITY_EDITOR
            instance.colorScheme = colorScheme;
            #endif
        }