Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 19.09.2018
Сообщений: 5

Система инвентаря. Проблема с отрисовкой инвентаря, несмотря на то, что логика работает как надо

12.07.2019, 22:10. Показов 2902. Ответов 2

Студворк — интернет-сервис помощи студентам
Недавно начал изучать работу в Unity и С# с нуля. Долго мучился с системой предметов, но что-то таки соорудил. Появилась одна проблема: Инвентарь открывается по нажатию кнопки (Эта же кнопка отвечает за отрисовку инвентаря). При нажатии на эту самую button открывается инвентарь, а sprite и text на префабе ячейки не грузится. НО! Если закрыть и заново открыть инвентарь, то все отрисовывается как надо. Не понимаю, в чем может быть дело, видимо плохое знание языка сказывается. Вот код, не ругайтесь сильно, начал заниматься этим 2-3 недели назад, если совсем зеленый:

Это скрипт, который висит на префабе ячейки (Отображает рамку редкости(разные цвета), размер стака,если предметы стакаются и собственно сам предмет):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System.Collections;
using System.Collections.Generic;
using System.Dynamic;
using UnityEngine;
using UnityEngine.UI;
 
public class CellScript : MonoBehaviour
{
    public GameObject Stack;
    public GameObject Item;
    string path;
    public void Cell_Image(Items item)
    {
        Item.GetComponent<Image>().sprite = item.Icon;
        
 
    }
    public void Cell_StackCount(Items item)
    {
            Stack.GetComponent<Text>().text = item.CurStack.ToString();
        
    }
    public void Cell_Rarity(int rarity)
    {
        GetComponent<Image>().sprite = Resources.Load<Sprite>(string.Format($"Skins/Icons/2/{rarity}"));
        
    }
}
Это скрипт, который отрисовывает инвентарь при нажатии на кнопку:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System.Collections;
using System.Collections.Generic;
using UnityEditor.Animations;
using UnityEngine;
 
public class Inventory : MonoBehaviour
{
    public SaveLoad SaveLoad;
    public CellScript CellScript;
    public GameObject CellPrefab;
    public Transform Parent;
    private bool render;
    //public Dictionary<int, Items> Items;
    //public List<Items> InventoryDataBase;
    //public List<Items> InventoryList;
    public void Render()
    {
        
            foreach (Transform Cell in Parent)
            {
                Destroy(Cell.gameObject);
            }
            for (int i = 0; i < SaveLoad.InventoryList.Capacity; i++)
            {
                if(SaveLoad.InventoryList[i] != null)
                {
                            GameObject Cell = Instantiate(CellPrefab, Vector3.zero, Quaternion.identity, Parent);
                            CellScript.Cell_Rarity(SaveLoad.InventoryList[i].Rarity);
                            CellScript.Cell_Image(SaveLoad.InventoryList[i]);
                            CellScript.Cell_StackCount(SaveLoad.InventoryList[i]);
                            
                }
            }
        }
        
    
    public void OnEnable()
    {
        Parent = GameObject.Find("/Bag/Window/Grid").GetComponent<Transform>();
        SaveLoad = GameObject.Find("/SaveLoad").GetComponent<SaveLoad>();
 
    }
}
Прошу только не говорите, что код кривой, лучше помогите решить проблему
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.07.2019, 22:10
Ответы с готовыми решениями:

Система инвентаря или как перетащить image1 в panel1
Друзья,ребята помогите пожалуйста.Как сделать так,чтобы можно было сделать что-то вроде инвентаря.У меня на форме есть Panel1 и...

Система инвентаря для игры
В общем, перенёс я код,который писал на движке, в VS и мне нужна помощь. P.S. Ошибки такие же как и в движке. Inventory.cpp #include...

Автоматизированная информационная система «Учет инвентаря на складах предприятия»
Помогите решить пожалуйста. начала делать. связи не получаются. соответственно все остальное сделать не могу. помогите сделать все...

2
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
13.07.2019, 01:23
Лучший ответ Сообщение было отмечено F3nIk как решение

Решение

F3nIk,
После строки
C#
1
GameObject Cell = Instantiate(CellPrefab, Vector3.zero, Quaternion.identity, Parent);
нужно вставить строку:
C#
1
var CellScript = Cell.GetComponent<CellScript>();
1
0 / 0 / 0
Регистрация: 19.09.2018
Сообщений: 5
13.07.2019, 12:56  [ТС]
Спасибо больше, проблема решена!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.07.2019, 12:56
Помогаю со студенческими работами здесь

Система или функция присвоения координат при создании слотов для инвентаря?
Здравствуйте. Делаю небольшую игру в подарок близкому человеку. Сейчас парюсь над системой инвентаря, и вот возникла проблема. ...

Автоматизированная система "Учет инвентаря на складах предприятия"
Помогите решить пожалуйста. начала делать. связи не получаются. соответственно все остальное сделать не могу. помогите сделать все...

Как сделать всплывающее окно инвентаря. C#
Здравствуйте, подскажите пожалуйста как сделать всплывающее окно инвентаря по нажатию на кнопку &quot;e&quot;. Вот код: using...

Как сделать взаимодействие предметов из инвентаря с другими предметами?
Помогите пожалуйста доработать инвентарь для игры. Я где-то 1-2 года назад хотел сделать свой небольшой квест с поиском предметов но...

Как реализовать Передачу инвентаря в мультиплеере? Правильно ли я делаю?
Здравствуйте, очень прошу помочь! Как сделать взаимодействие персонажей в мультиплеере, т.е. по сети..? Вопрос именно в реакции игрока... ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru