Multiple 3D Models with a single Image Target

I can not achieve this task, I have 6 different models that have the same target, but I want to show only one model at a time, say the one in position , since I’m doing it with a GameObjects array, so When selecting next with an arrow, I have just seen the following model and the same thing happens with the back arrow, that I deployed the previous model.
I can visualize a model but as I go forward with the arrows, the others are also on the screen, filling up with the 6 models. The code so far is the following:
using UnityEngine;
using Vuforia;
using System;
using System.Collections.Generic;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class MyDefaultTrackableEventHandler3: MonoBehaviour, ITrackableEventHandler {

protected TrackableBehaviour mTrackableBehaviour;
public int s_SelectedIndex;
public GameObject[] players;

protected virtual void Start() {

players = GameObject.FindGameObjectsWithTag(“Player”);

foreach(GameObject wi in players) {
wi.SetActive(false);
}
mTrackableBehaviour = GetComponent < TrackableBehaviour > ();
if (mTrackableBehaviour)
mTrackableBehaviour.RegisterTrackableEventHandler(this);

}

protected virtual void OnDestroy() {
if (mTrackableBehaviour)
mTrackableBehaviour.UnregisterTrackableEventHandler(this);

}

public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus) {

if (newStatus == TrackableBehaviour.Status.DETECTED || newStatus == TrackableBehaviour.Status.TRACKED || newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED) {
Debug.Log(“Trackable " + mTrackableBehaviour.TrackableName + " found”);
OnTrackingFound();

} else if (previousStatus == TrackableBehaviour.Status.TRACKED && newStatus == TrackableBehaviour.Status.NO_POSE) {
Debug.Log(“Trackable " + mTrackableBehaviour.TrackableName + " lost”);
OnTrackingLost();
} else {
OnTrackingLost();
}
}

public void Suma() {
players[s_SelectedIndex].SetActive(false);
s_SelectedIndex++;
players[s_SelectedIndex].SetActive(true);
}

public void Resta() {
players[s_SelectedIndex].SetActive(false);
s_SelectedIndex–;
players[s_SelectedIndex].SetActive(true);
}

protected virtual void OnTrackingFound() {

if (s_SelectedIndex < players.Length) {
Debug.Log("Player Number " + s_SelectedIndex + " is named " + players[s_SelectedIndex].name);

var rendererComponents = players[s_SelectedIndex].GetComponentsInChildren < Renderer > (true);
var colliderComponents = GetComponentsInChildren < Collider > (true);
var canvasComponents = GetComponentsInChildren < Canvas > (true);

foreach(var component in rendererComponents)
component.enabled = true;

foreach(var component in colliderComponents)
component.enabled = true;

foreach(var component in canvasComponents)
component.enabled = true;

}

}

protected virtual void OnTrackingLost() {

var rendererComponents = GetComponentsInChildren < Renderer > (true);
var colliderComponents = GetComponentsInChildren < Collider > (true);
var canvasComponents = GetComponentsInChildren < Canvas > (true);

foreach(var component in rendererComponents)
component.enabled = false;

foreach(var component in colliderComponents)
component.enabled = false;

foreach(var component in canvasComponents)
component.enabled = false;

}

}

I found the error leaving the OnTrackingFound () method that comes by default, leaving it like this

       var rendererComponents = GetComponentsInChildren < Renderer > (true);

and only activate and deactivate the gameObjects by means of the addition and subtraction methods.

 public void Suma() {
     players[s_SelectedIndex].SetActive(false);
     s_SelectedIndex++;
     players[s_SelectedIndex].SetActive(true);
   } 
 
   public void Resta() {
     players[s_SelectedIndex].SetActive(false);
     s_SelectedIndex--;
     players[s_SelectedIndex].SetActive(true);
   }