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); }
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(); }
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); }
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 }