Double click to select all same type rendered objects

I want to implement a 3D feature that is long time present in AOE 2 and red alert series. When we double click a soldier , all soldiers rendered of same type is select. Is there any way I can detect fast and efficiently that small part of game world how many objects of a type is visible to user right now !

Add every unit to a master list.

On Double Click, detect the type of unit. Then use a foreach on the master list of any units that match your criteria.

As Cynikal says: add every unit to a master list. Take a look at the singleton pattern.

Depending on the number of types of units, you could potentially assign an enum type to each soldier (or even an int ID value), then use that to retrieve them from the master list.

You could then follow up with the check to see if they’re visible before returning, so you only return a list of visible soldiers of that type.

something along the lines of the following:

public enum SoldierTypes {gunner, bombardier, rifleman} 

public Soldier[] GetSoldiersOnScreen(SoldierTypes soldierType ) {

   Foreach (Soldier soldier in MasterListOfSolders) {

     if (soldier.soldierType == typeParameter && soldier.GetComponent().IsVisible)  {
        solderList.Add(soldier);
     }
  }
  return soldierList;
}