using UnityEngine; using UnityEngine.UI; namespace AllIn1SpriteShader { public class RandomSeed : MonoBehaviour { private readonly int randomSeedProperty = Shader.PropertyToID("_RandomSeed"); private MaterialPropertyBlock propertyBlock; //If you want to randomize UI Images, you'll need to create different materials since materials are always shared //This can be done at runtime with scripting or manually in the editor private void Start() { Renderer renderer = GetComponent(); if(renderer != null) { propertyBlock = new MaterialPropertyBlock(); propertyBlock.SetFloat(randomSeedProperty, Random.Range(0f, 100f)); renderer.SetPropertyBlock(propertyBlock); } else { Image image = GetComponent(); if (image != null) { if (image.material != null) { image.material.SetFloat(randomSeedProperty, Random.Range(0, 1000f)); } else Debug.LogError("Missing Material on UI Image: " + gameObject.name); } else Debug.LogError("Missing Renderer or UI Image on: " + gameObject.name); } } } }