Вы должны использовать уникальный ключ для сохранения.Но вы используете один и тот же ключ для всех идентификаторов: «номер».
int i = 0;
foreach(var weapon1 in itemManager.items) {
PlayerPrefs.SetInt ("nummer_" + i++, weapon1.id);
}
Но возникает вопрос: как вы будете читать с PlayerPrefs неизвестные ключи?Лучший способ - сериализовать список оружия в файл.
https://docs.unity3d.com/Manual/script-Serialization.html https://unity3d.com/ru/learn/tutorials/topics/scripting/serialization-and-game-data
Или вы можете объединить все свои идентификаторы в строку, сохранить их в PlayerPrefs и анализировать при чтении:
//save
String weaponsList;
foreach(var weapon1 in itemManager.items) {
weaponsList += weapon1.id + ',';
}
PlayerPrefs.SetString ("weapons",weaponsList);
//load
String weaponsList = PlayerPrefs.GetString("weapons", String.Empty);
var weaponsIds= weaponsList.Split(new[] { ',' }, System.StringSplitOptions.RemoveEmptyEntries);
foreach(var weaponId in weaponsIds) {
//...
}