# Scripting

If you prefer avoiding animations or want to change properties through code you also have the possibility.

You can find the property names by hovering the mouse over any property in the Material Inspector:

<figure><img src="/files/xXXrxoh8azlYHcx39Tr2" alt=""><figcaption></figcaption></figure>

**To do so you’ll need to use the following Unity functions:**

* **Material.SetFloat:** <https://docs.unity3d.com/ScriptReference/Material.SetFloat.html>
* **Material.SetColor:** <https://docs.unity3d.com/ScriptReference/Material.SetColor.html>
* **Material.SetTexture:** <https://docs.unity3d.com/ScriptReference/Material.SetTexture.html>

You can find all property names on AllIn1SpriteShader/Resources/AllIn1SpriteShader.shader. All properties are located from line 5 to 225 and can also be found at the Effects and Properties Breakdown section.\
\
**Here an example code snippet:**

```
Material mat = GetComponent<Renderer>().material;
mat.SetFloat("_Alpha", 1f);
mat.SetColor("_Color", new Color(0.5f, 1f, 0f, 1f));
mat.SetTexture("_MainTex", texture);
```

{% hint style="info" %}
Note that there is an important distinction to be made between a “material” and a “sharedMaterial” of a Renderer. You shall use “material” if you only want to change a property of that instance of the material. And “sharedMaterial” if you want to change the property of all the instances of that material
{% endhint %}

There's also an exception with materials used by a Masked UI Image where you’ll need to use “materialForRendering” instead. An example would be:

```
image.materialForRendering.SetFloat("_FadeAmount", t);
```

\
Finally ,consider that if you are trying to change a Material used in a UI component the material instances will be shared. This means that any change made to an image material will affect all other instances. To avoid this create a new copy of the material via script on an Awake method:

```
void Awake()
{
        Image uiImage = GetComponent<Image>();
        uiImage.material = new Material(uiImage.material);
 }
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://seasidestudios.gitbook.io/seaside-studios/sprite-shader/scripting.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
