AndreyMust19 13 апр 2013, 09:06
Понормальному GUI должен быть отдельно от сущности. foreach - это тот же while c GetEnumerator в старте и MoveNext() как итератор. Если цикл хоть один элемент перечисления (в вашем случае списка) изменился, то GetEnumerator нужно выполнить снова и обрабатывать перечисление заново.
Подумайте - а есть ли необходимость вырисовывать инвентарь каждый кадр, перебирая все его элементы? Ведь он очень редко меняется (порой может не менять неск. минут или часов). В вашем случае можно отключить обновление GUI инвентаря на время изменения содержимого, а после - снова включать.
Я сделал обновление через делегаты - GUI подписывается на них и Inventory вызывает делегат (Add, Remove, Replace) после изменения содержимого. А сам GUI рисуется через GUITexture и GUIText, в результате интерфейс инвентаря обновляется только когда изменилось его содержимое, не каждый кадр.
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами