访问仓库物品列表的方法
- 为了在UI中显示物品列表,我们需要给InventoryManager添加两个能够访问它的公有方法;
- 代码:
···
public List<string> GetItemList()
{
List<string> list = new List<string>(_items.Keys);
return list;
}
public int GetItemCount(string name)
{
if (_items.ContainsKey(name))
{
return _items[name];
}
return 0;
}
···
创建图片目录
- 在UI中,物品将以图标的形式显示,所以我们需要将这些照片导入项目中;
- 创建一个Resources目录,然后在该目录下创建一个Icon目录;
显示仓库的脚本BasicUI
- 创建一个空的名为Controller的对象,然后将BasicUI脚本付给它;
- 代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BasicUI : MonoBehaviour
{
void OnGUI()
{
int posX = 10;
int posY = 10;
int width = 100;
int height = 30;
int buffer = 10;
List<string> itemList = Managers.Inventory.GetItemList();
if(itemList.Count == 0 )
{
GUI.Box(new Rect(posX, posY, width, height), "No Items");
}
foreach (string item in itemList)
{
int count = Managers.Inventory.GetItemCount(item);
Texture2D image = Resources.Load<Texture2D>("Icons/" + item);
GUI.Box(new Rect(posX, posY, width, height), new GUIContent("(" + count + ")", image));
posX += width + buffer;
}
}
}
- 每个MonoBehaviour会自动响应OnGUI方法,在3D场景被渲染之后,这个方法在每一帧中都会执行;
- Resources.Load()方法用于从Resources目录中加载资源。该方法是一个根据名称来加载资源的简便方法,注意物品的名称将作为参数。当然,我们必须要指定要加载的类型,否则,这个方法的返回类型是通用对象类型;
参考资料
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!