访问仓库物品列表的方法

  • 为了在UI中显示物品列表,我们需要给InventoryManager添加两个能够访问它的公有方法;
  • 代码:
···
public List<string> GetItemList() //返回仓库中的物品列表
{
List<string> list = new List<string>(_items.Keys); //返回所有Dictionary键的列表
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; ///<summary>
///4.14
///显示仓库
///</summary> 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); //从Resources目录中加载资源的方法
GUI.Box(new Rect(posX, posY, width, height), new GUIContent("(" + count + ")", image));
posX += width + buffer; //循环中每次向一边偏移
}
}
}
  • 每个MonoBehaviour会自动响应OnGUI方法,在3D场景被渲染之后,这个方法在每一帧中都会执行;
  • Resources.Load()方法用于从Resources目录中加载资源。该方法是一个根据名称来加载资源的简便方法,注意物品的名称将作为参数。当然,我们必须要指定要加载的类型,否则,这个方法的返回类型是通用对象类型;

参考资料

  • Unity3D之OnGUI知识总结;
  • 《Unity 5实战——使用C#和Unity开发多平台游戏》,作者Joseph Hocking ,译者蔡俊鸿。

Unity3D游戏开发——显示物品的仓库UI的更多相关文章

  1. [Unity3D]Unity3D游戏开发3D选择场景中的对象,并显示轮廓效果强化版

    大家好,我是秦培,欢迎关注我的博客,我的博客地址blog.csdn.net/qinyuanpei. 在上一篇文章中,我们通过自己定义着色器实现了一个简单的在3D游戏中选取.显示物体轮廓的实例. 在文章 ...

  2. [Unity3D]Unity3D游戏开发之伤害数值显示

    大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.众所周知,在RPG游戏策划中最为重要的一个环节是数值策划.数值策划是一个关于游戏平衡方面的概念 ...

  3. [Unity3D]Unity3D游戏开发之飞机大战项目解说

    大家好,我是秦元培,欢迎大家继续关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 首先感谢大家对我博客的关注,今天我想和大家分享的是一个飞机大战的项目.这是一个比較综合的 ...

  4. [Unity3D]Unity3D游戏开发之跑酷游戏项目解说

    大家好,我是秦元培.我參加了CSDN2014博客之星的评选,欢迎大家为我投票,同一时候希望在新的一年里大家能继续支持我的博客. 大家晚上好.我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.c ...

  5. [Unity3D]Unity3D游戏开发之异步记载场景并实现进度条读取效果

    大家好,我是秦元培.欢迎大家关注我的博客,我的博客地址是:blog.csdn.net/qinyuanpei.终于在各种无语的论文作业中解脱了,所以立即抓紧时间来这里更新博客.博主本来计划在Unity3 ...

  6. Unity3D游戏开发初探—2.初步了解3D模型基础

    一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...

  7. 从一点儿不会开始——Unity3D游戏开发学习(一)

    一些废话 我是一个windows phone.windows 8的忠实粉丝,也是一个开发者,开发数个windows phone应用和两个windows 8应用.对开发游戏一直抱有强烈兴趣和愿望,但奈何 ...

  8. Unity3D游戏开发从零单排(四) - 制作一个iOS游戏

    提要 此篇是一个国外教程的翻译,尽管有点老,可是适合新手入门. 自己去写代码.debug,布置场景,能够收获到非常多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一 ...

  9. 内置3D对象-Unity3D游戏开发培训

    内置3D对象-Unity3D游戏开发培训 作者:Jesai 2018-02-12 19:21:58 五大面板: -Hierachy:当前场景中的物体 图 1-1 -Project:项目中的所有资源 图 ...

随机推荐

  1. 解决SDL/SDL.h: No such file or directory

    我在使用SDL2的时候遇到始终找不到头文件的问题,到处百度然后我尝试使用#include<SDL2/SDL.h>编译通过了,那么我很显然我之前设置的环境变量应该是没有生效的,后面在返回来研 ...

  2. linux中服务环境的搭建

    一.Samba服务 samba服务的安装及配置: sudo apt-get install samba 二.配置: 1.创建一个需要共享的目录,并修改权限: lpf@ubuntu:~$ mkdir l ...

  3. json keyname map

    var obj = { fname:'zhao', lname:'yao', parents:{ father:'zhao' }, children:[ { dname:'zhaoyiyi' } ] ...

  4. sublime ruby [Decode error - output not utf-8] 错误

    今天用sublime3 写ruby,然后最简单的 pust "hello" 都出不来, ctrl + b的时候报错.注:win7下 [Decode error - output n ...

  5. JavaWeb总结(八)

    对象作用域 在Servlet里可以用一个名字绑定一个对象,并且在应用中传递和使用这个对象 作用域对象 属性操作方法 作用域范围说明 ServletContext(上下文) void setAttrib ...

  6. 18-[模块]-shutil

    shutil模块 高级的 文件.文件夹.压缩包 处理模块 (1)文件操作 shutil.copyfileobj(fsrc, fdst[, length]) 将文件内容拷贝到另一个文件中 import ...

  7. [NOI2007]货币兑换 cdq分治,斜率优化

    [NOI2007]货币兑换 LG传送门 妥妥的\(n \log n\)cdq做法. 这题用cdq分治也可以\(n \log n\)但是在洛谷上竟然比一些优秀的splay跑得慢真是见了鬼了看来还是人丑常 ...

  8. iOS开发者证书-详解

    iOS开发者证书-详解/生成/使用 本文假设你已经有一些基本的Xcode开发经验, 并注册了iOS开发者账号. 相关基础 加密算法 现代密码学中, 主要有两种加密算法: 对称密钥加密 和 公开密钥加密 ...

  9. Package设计1:选择数据类型、暂存数据和并发

    SSIS 设计系列: Package设计1:选择数据类型.暂存数据和并发 Package设计2:增量更新 Package 设计3:数据源的提取和使用暂存 一,数据类型的选择 对于SSIS的数据类型,容 ...

  10. 使用ASP.NET Identity以手机短信实现双重验证

    这篇文章将展示怎么使用SMS短信启动双重验证 创建一个ASP.NET 5项目 一开始,使用Visual studio 2015创建一个新的ASP.NET Web应用程序: 在下一步中选择ASP.NET ...