Change Texture dynamically in Unity with C#
In this article, I will show how to change Texture dynamically using Unity with C#.
I will show you how to do this from the very beginning step by step.
Step 1: Create a 3D Object
First, create a 3D Object. To create a 3D sphere, right-click in the Hierarchy and choose “3D Object,” then select “Sphere.”
Sphere is successfully created.
Step 2: Create a Material
Create a material for the GameObject by right-clicking in the Assets window, then choose Create > Material.
Now Material is successfully created.
Step 3: Drag and Drop the material
Now, you have to drag and drop the created material to the marked place in the below image.
Step 4: Create a button
Now, create a button by right-clicking in the Hierarchy window, and select UI > Button-TextMeshPro.
Adjust your button according to your game.
Step 5: Create C# Script
Now create a C# script by right-clicking in the Assets window, and select Create > C# Script.
After creating the C# script, name it as ChangeTexture
, and write down the code given below.
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ChangeTexture : MonoBehaviour { public Renderer sphereRenderer; public GameObject sphere; [SerializeField] private Texture[] textures; private int randomTextureIndex; // Start is called before the first frame update void Start() { sphereRenderer = sphere.GetComponent<Renderer>(); } public void ChangeSphereTexture() { randomTextureIndex = Random.Range(0, textures.Length); sphereRenderer.material.mainTexture = textures[randomTextureIndex]; } }
Step 6: Add Change Texture Script
Add the ChangeTexture script to the Button. Now go to the Inspector window, select Button > On Click () > +.
In On Click ()
- Select Object > Scene > Button.
- Function > ChangeTexture > ChangeSphereTexture() .
- Drag and drop the Sphere to the sphere renderer and sphere GameObject
- Select the texture you want to use and drop it into the Textures field
Now run the Scene.
Output:
Leave a Reply