Why cant I change the image to another?

Hi All

I tried to setup a small class in my game that allows me to change the target reticle when pressing mouse left and right buttons; but I still cannot get the image to change. I also tried to use a co-routine to create a short pause between changing images, but this doesn’t work either - I had to use a co-routine as the update() does not return a value.

here is my code below:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using System;

using UnityStandardAssets.CrossPlatformInput;
using UnityStandardAssets.Utility;
using Random = UnityEngine.Random;

public class reticalChanger : MonoBehaviour {

public Sprite[] images;
public Sprite sprite;

private Vector2 movement;


// Use this for initialization
void Start (){

    this.transform.GetComponent<UnityEngine.UI.Image>().sprite = sprite;

    
    //IEnumerator Pause()
    //{
    //    print(Time.time);
    //    yield return new WaitForSeconds(5);
    //    print(Time.time);
    //}

}

// Update is called once per frame
void Update (){

    if (Input.GetButtonDown("Fire1"))
    {
        sprite = images[1];
        Debug.Log("fire button");
    }
    if (Input.GetButtonDown("Fire2"))
    {
        sprite = images[0];
        Debug.Log("fire button 2");
    }
    /*UnityStandardAssets.Characters.FirstPerson.FirstPersonController FPC = GetComponent<UnityStandardAssets.Characters.FirstPerson.FirstPersonController>();
    if (FPC.Vector() == Vector3.zero)
    {
        //must use IEnumerator as Update does not return a value
        StartCoroutine(Pause());

    }*/

}

}

You’re never actually changing the sprite on the image. To do so, you need to store a reference to the Image component you want to change, then change it’s sprite property. That will apply it to the actual object. Right now, you’re just changing your local variable that isn’t hooked up to anything.