纳金网

标题: NGUI简易背包比官网简单(添加了注释,上传了NGUI.package) [打印本页]

作者: 请叫我腊肠大人    时间: 2013-12-21 17:01
标题: NGUI简易背包比官网简单(添加了注释,上传了NGUI.package)

看了网上很多用GUI做的背包,小弟今天就用NGUI来实现一下简单的背包效果。先写物品进入背包和取出背包效果,下个教程实现装备穿戴,和药品使用。


首先我们来分析下游戏里面的背包功能:

1、  背包得有个背景图片吧
2、  背包得有背景格子吧
3、  背包得有最大容量吧
4、  背包里面得有物品单元吧
5、  背包总有功能吧
(1)、物品进入背包
(2)、物品从背包出去
(3)、物品从背包丢弃
(4)、物品的数量

好了,分析完功能需求以后咱们来算算需要哪些准备工作:
1、  背景图片、格子图片、物品图片这些用NGUI做个图集(这里就不多说了,一定要做个图集)
2、  掉落物品模型(这个模型自己随便找)

好了,接下来咱们就开始设计背包系统:
1、  第一步,导入NGUI这个package。导入之后菜单栏可能不会立即出现NGUI这个选项,你刷新一下Project面板等一会就会出现。接着我们来创建我们的背包面板,我们先新建一个层,名为2DUI:Layers--->edit layers --->user layer8--->输入2DUI
新建2DUI层

2、第二步,选择菜单栏NGUI--->Open--->UIWizard 我用的是NGUI 3.0.6版本不同估计这些选项的位置会有变动,但是你只要知道是创建一个新的UI就行了然后弹出窗口layer 下拉选择2DUI层,点击Create Your UIHierarchy面板会出现一个UI Root(2D):
创建界面 选择2DUI层 创建成功

3、第三步,我们在Camera下创建一个空物体(Gameobject--->Create Empty):并命名为WindowsPanel(我们游戏里面不止一个窗口,其他的还有技能、商场、任务、装备……这个作为一个管理容器)

空物体
windowPanel下创建一个空物体,命名为:PackageWindow,然后在PackageWindow下创建2个空物体和一个sprite ,分别命名为CellBGContainer(用来放格子背景),CellContainer(用来放背包里面的物品),PackageBG(背包的背景图片):
6.png

PackageBG的锚点设为左上角(Pivot选第一个),并把它大小(Dimensions)设为300 * 400(这个随意,大小合适就行),SpriteType设为Sliced depth-1(以免将格子格子背景遮挡):然后在CellBGContainer下面创建多个sprite(个数随意)大小设为50*50 SpriteType设为Sliced这时sprite挤在一起:
设锚点和大小 创建格子背景

接下来选中CellBGContainer给他添加一个Gird脚本,位置在:Component--->NGUI--->Interaction--->Gird:然后将Max perLine设置为5(每行几个格子,这个随意,合适就行)cell width cell height设为50(和格子背景大小相同,也可稍微大点),然后点击Reposition Now,这时就自动的排序了:然后选中CellBGContainer按下ctrl + D 复制一份 ;命名为CellContainer ,并删掉CellContainer所有的子Sprite
9.png 10.png

4、第四步,我们来设计格子,在CellContainer下面新建一个按钮命名为ItemCell,将sprite命名为Icon(图标),Pivot设置为左上角,大小设置为50*50,label(计数用)命名为Num(数量)Pivot设置为右下角,调整位置到ItemCell的右下角(自行调整,合适就行):结构如下

11.png 12.png

然后创建5个文件夹,结构如下:分别存放我们的场景、预设、用到的图片、脚本
Prefabs文件夹下创建一个Prefab命名为InventoryItemCell把刚才创建的ItemCell拖上去,就有了一个InventoryItemItemCell的预设:
14.png

5、第五步,我们在PackageWindow下面创建一个空物体,命名为CellDescribe,在CellDescribe下创建一个Sprite命名为BGPovit设为左上角,大小设为150*220合适就行,这个随意)和一个Label命名为ContentPovit设为左上角,OverFlow设为ResizeHeight,把Dimension 设为100*30这个随意,合适就行,100label的每行长度),分别作为物品描述的背景和内容框:
15.png

然后我们在Prefabs文件夹下创建一个Prefab命名为InventoryItemCellDescribe,把CellDescribe拖上去形成一个预设:
16.png

6、第六步,我们在Scripts文件夹里面新建5个脚本:DropBaseDropObjectDataBaseDropObjectInventoryItemCell。功能会在下面一一说明:
DropBase它是掉落物品的类,有掉落物品的属性,DropObjectDataBase这个是掉落物品数据库,大家可以在这里面修改物品的参数,DropObject这个是掉落物品的物体,Inventory这个是背包的核心,进入背包和出背包都是通过调用这个类的方法,ItemCell这个是背包里面的元素类,负责物品的使用和属性的显示。
脚本:
DropBase.cs
  1. /// <summary>
  2. /// Drop base.第一个类,用来描述掉落物品的信息(id编号->可用做数据库id索引,掉落物品名,图标名称->后面要从图集里面选取图标,
  3. /// Drop base.物品的描述->写个小故事,物品的值比如对自身属性的加成和红药蓝药的效果)
  4. /// </summary>
  5. public class DropBase {
  6.         public int id ;                        
  7.         public string name ;                    
  8.         public string iconname ;               
  9.         public string describe ;                                
  10.         public float[] valuses ;                                
  11.         public int amount ;                                                
  12.         /// <summary>
  13.         /// Initializes a new instance of the <see cref="DropBase"/> class.构造函数
  14.         /// </summary>
  15.         /// <param name="_id">_id.</param>
  16.         /// <param name="_name">_name.</param>
  17.         /// <param name="_describe">_describe.</param>
  18.         /// <param name="_val">_val.</param>
  19.         public DropBase(int _id , string _name , string _describe , float[] _val){
  20.                 valuses = new float[5] ;
  21.                 id = _id ;
  22.                 name = _name ;
  23.                 iconname = _name ;
  24.                 describe = _describe ;
  25.                 valuses = _val ;
  26.                 amount = 1 ;
  27.         }
  28. }
复制代码
DropObjectDataBase.cs

  1. /// <summary>
  2. /// Drop object data base.这个用来设计掉落物品的数据库,有个构造函数通过设置它的种类,来构造一个掉落物品
  3. /// Drop object data base.大家可以在这里面修改属性(名称,值。etc)
  4. /// </summary>
  5. using UnityEngine;
  6. using System.Collections;
  7. using System ;  

  8. public class DropObjectDataBase : MonoBehaviour {
  9.         /// <summary>
  10.         /// DBSPCIES.这个用来设定掉落物品的大种类
  11.         /// </summary>
  12.         public enum DBSPCIES{RedBottles , BlueBottles , Equipments , Others} ;
  13.         /// <summary>
  14.         /// DBLISTS.这个用来设定掉落物品到底是什么
  15.         /// </summary>
  16.         public enum DBLISTS{
  17.                 redPotion01 ,
  18.                 redPotion02 ,
  19.                 bluePotion01 ,
  20.                 bluePotion02 ,
  21.                 hat01 ,
  22.                 hat02 ,
  23.                 cloth01 ,
  24.                 cloth02 ,
  25.                 boot01 ,
  26.                 boot02 ,
  27.                 weapon01 ,
  28.                 weapon02 ,
  29.                 trousers01 ,
  30.                 trousers02  
  31.         } ;
  32.         public DBSPCIES dbspcies ;
  33.         public DBLISTS dblist ;
  34.         public DropBase dropBase ;
  35.         /// <summary>
  36.         /// index arr[].索引和值数组
  37.         /// </summary>
  38.         private int index ;
  39.         private float[] arr ;

  40.         // Use this for initialization
  41.         void Start () {
  42.                 /// <summary>
  43.                 /// switch.通过一个条件选择语句初始化DropBase,并通过名称设置它的大种类
  44.                 /// </summary>
  45.                 switch(dblist){
  46.                 case DBLISTS.redPotion01:
  47.                         index = (int)DBLISTS.redPotion01 ;
  48.                         arr = new float[5]{ 100 , 0 , 0 , 0 , 0 } ;
  49.                         break ;
  50.                 case DBLISTS.redPotion02:
  51.                         index = (int)DBLISTS.redPotion02 ;
  52.                         arr = new float[5]{ 200 , 0 , 0 , 0 , 0 } ;
  53.                         break ;
  54.                 case DBLISTS.bluePotion01:
  55.                         index = (int)DBLISTS.bluePotion01 ;
  56.                         arr = new float[5]{ 70 , 0 , 0 , 0 , 0 } ;
  57.                         break ;
  58.                 case DBLISTS.bluePotion02:
  59.                         index = (int)DBLISTS.bluePotion02 ;
  60.                         arr = new float[5]{ 140 , 0 , 0 , 0 , 0 } ;
  61.                         break ;
  62.                 case DBLISTS.hat01:
  63.                         index = (int)DBLISTS.hat01 ;
  64.                         arr = new float[5]{ 6 , 5 , 3 , 8 , 4 } ;
  65.                         break ;
  66.                 case DBLISTS.hat02:
  67.                         index = (int)DBLISTS.hat02 ;
  68.                         arr = new float[5]{ 22 , 14 , 44 , 23 , 32 } ;
  69.                         break ;
  70.                 case DBLISTS.cloth01:
  71.                         index = (int)DBLISTS.cloth01 ;
  72.                         arr = new float[5]{ 6 , 5 , 3 , 8 , 4 } ;
  73.                         break ;
  74.                 case DBLISTS.cloth02:
  75.                         index = (int)DBLISTS.cloth02 ;
  76.                         arr = new float[5]{ 32 , 24 , 33 , 55 , 22 } ;
  77.                         break ;
  78.                 case DBLISTS.trousers01:
  79.                         index = (int)DBLISTS.trousers01 ;
  80.                         arr = new float[5]{ 6 , 5 , 3 , 8 , 4 } ;
  81.                         break ;
  82.                 case DBLISTS.trousers02:
  83.                         index = (int)DBLISTS.trousers02 ;
  84.                         arr = new float[5]{ 55 , 33 , 44 , 22 , 11 } ;
  85.                         break ;
  86.                 case DBLISTS.boot01:
  87.                                 index = (int)DBLISTS.boot01 ;
  88.                         arr = new float[5]{ 6 , 5 , 3 , 8 , 4 } ;
  89.                         break ;
  90.                 case DBLISTS.boot02:
  91.                         index = (int)DBLISTS.boot02 ;
  92.                         arr = new float[5]{ 31 , 22 , 41 , 31 , 27 } ;
  93.                         break ;
  94.                 case DBLISTS.weapon01:
  95.                         index = (int)DBLISTS.weapon01 ;
  96.                         arr = new float[5]{ 65 , 12 , 33 , 65 , 12 } ;
  97.                         break ;
  98.                 case DBLISTS.weapon02:
  99.                         index = (int)DBLISTS.weapon02 ;
  100.                         arr = new float[5]{ 223 , 112 , 445 , 263 , 112 } ;
  101.                         break ;
  102.                 }
  103.                 /// <summary>
  104.                 /// new DropBase.构造一个物品
  105.                 /// </summary>
  106.                 dropBase = new DropBase( index , ((DBLISTS)Enum.ToObject(typeof(DBLISTS),index )).ToString() , "" , arr);
  107.                 /// <summary>
  108.                 /// if-else.设定它的大种类
  109.                 /// </summary>
  110.                 if(dblist <= DBLISTS.redPotion02 && dblist >= DBLISTS.redPotion01){
  111.                         dbspcies = DBSPCIES.RedBottles ;
  112.                 }else if(dblist <= DBLISTS.bluePotion02 && dblist >= DBLISTS.bluePotion01){
  113.                         dbspcies = DBSPCIES.BlueBottles ;
  114.                 }else if(dblist <= DBLISTS.weapon02 && dblist >= DBLISTS.hat01){
  115.                         dbspcies = DBSPCIES.Equipments ;
  116.                 }
  117.                 //print(dblist +""+ dbspcies);
  118.         }
  119. }
复制代码
Inventory.cs

  1. /// <summary>
  2. /// Inventory.背包的核心类,背包操作
  3. /// </summary>
  4. using UnityEngine;
  5. using System.Collections;
  6. /// <summary>
  7. /// Inventory.要使用List线性表,需要引入这个Generic
  8. /// </summary>
  9. using System.Collections.Generic ;  

  10. public class Inventory : MonoBehaviour {
  11.         /// <summary>
  12.         /// The inventory list.定义一个存放gameobject的线性表
  13.         /// </summary>
  14.         private List<GameObject> inventoryList ;
  15.         // Use this for initialization
  16.         void Start () {
  17.                 inventoryList = new List<GameObject>() ;   
  18.         }

  19.         /// <summary>
  20.         /// Adds the item.物品进入背包函数,接受一个gameobject参数
  21.         /// </summary>
  22.         /// <param name="_goadd">_goadd.</param>
  23.         public void AddItem(GameObject _goadd){
  24.                 /// <summary>
  25.                 /// if-else.先通过CheckExisted函数判断背包里面是否存在这个物品如果有就把传过来的gameobject销毁在CheckExisted函数里面将数量加1
  26.                 /// </summary>
  27.                 if(CheckExisted(_goadd)){
  28.                         Destroy(_goadd) ;
  29.                 }else{
  30.                         /// <summary>
  31.                         /// if-else.背包里面如果存在这个物品,就把传过来的gameobject添加到线性表里去,并且把传过来的gameobject设定为背包的子物体
  32.                         /// </summary>
  33.                         inventoryList.Add(_goadd);
  34.                         _goadd.transform.parent = gameObject.transform ;
  35.                         /// <summary>
  36.                         /// localScale.设定它的缩放,不然它会很巨大
  37.                         /// </summary>
  38.                         _goadd.transform.localScale = new Vector3(1,1,1);
  39.                 }

  40.                 ReFreshInventory();
  41.         }
  42.         /// <summary>
  43.         /// Removes the item.将物品从背包删除,先从线性表里删除,然后再更新背包界面,最后销毁物体
  44.         /// </summary>
  45.         /// <param name="_goremove">_goremove.</param>
  46.         public void RemoveItem(GameObject _goremove){
  47.                 inventoryList.Remove(_goremove);
  48.                 ReFreshInventory();
  49.                 Destroy(_goremove);
  50.         }
  51.         /// <summary>
  52.         /// Res the fresh inventory.更新背包界面,从线性表读取物品信息并刷新界面
  53.         /// </summary>
  54.         public void ReFreshInventory(){
  55.                 foreach(GameObject g in inventoryList){
  56.                         g.GetComponentInChildren<UILabel>().text = g.GetComponent<DropObjectDataBase>().dropBase.amount + "" ;
  57.                 }
  58.                 /// <summary>
  59.                 /// Reposition.重新调整背包物品排列,UIGird的函数
  60.                 /// </summary>
  61.                 gameObject.GetComponent<UIGrid>().Reposition() ;
  62.         }
  63.         /// <summary>
  64.         /// Checks the existed.检测背包物品list里面的物体是否存在,通过比较物品名称种类实现判断,如果有就将数量加1,函数返回一个bool值
  65.         /// </summary>
  66.         /// <returns><c>true</c>, if existed was checked, <c>false</c> otherwise.</returns>
  67.         /// <param name="_go">_go.</param>
  68.         bool CheckExisted(GameObject _go){
  69.                 bool flag = false ;
  70.                 foreach(GameObject _obje in inventoryList){
  71.                         if(_go.GetComponent<DropObjectDataBase>().dblist == _obje.GetComponent<DropObjectDataBase>().dblist){
  72.                                 _obje.GetComponent<DropObjectDataBase>().dropBase.amount ++ ;
  73.                                 flag = true ;
  74.                                 break ;
  75.                         }else{
  76.                                 flag = false ;
  77.                         }
  78.                 }
  79.                 return flag ;
  80.         }
  81. }
复制代码
ItemCell.cs

  1. /// <summary>
  2. /// Item cell.
  3. /// </summary>
  4. using UnityEngine;
  5. using System.Collections;

  6. [RequireComponent(typeof(DropObjectDataBase))]
  7. public class ItemCell : MonoBehaviour {
  8.         /// <summary>
  9.         /// The cell DES.这个用来显示背包格子里面的信息,比如装备的属性之类的
  10.         /// </summary>
  11.         private GameObject cellDes ;
  12.         /// <summary>
  13.         /// The _cell D.这个用来获取格子身上的数据库脚本。因为需要用到里面的数值
  14.         /// </summary>
  15.         private DropObjectDataBase _cellDB ;
  16.         // Use this for initialization
  17.         void Start () {
  18.                 _cellDB = gameObject.GetComponent<DropObjectDataBase>() ;
  19.                 cellDes = GameObject.Find("InventoryItemCellDescribe");
  20.                 /// <summary>
  21.                 /// cellDes.transform.position.这句话用来设置属性描述框的初始位置,就是放到看不到的位置
  22.                 /// </summary>
  23.                 cellDes.transform.position = new Vector3(0,10000,0);
  24.         }
  25.         /// <summary>
  26.         /// Raises the click event.当鼠标点击物品的时候先判断物品的数量是否大于1个,如果大于1个的话就数量上减去1,否则刚好有一个的话就把它从背包删除
  27.         /// </summary>
  28.         void OnClick(){
  29.                 if(gameObject.GetComponent<DropObjectDataBase>().dropBase.amount > 1){
  30.                         gameObject.GetComponent<DropObjectDataBase>().dropBase.amount -- ;
  31.                 }else{
  32.                         this.transform.parent.GetComponent<Inventory>().RemoveItem(this.gameObject);
  33.                         /// <summary>
  34.                         /// DesHide.删除物品的同时将物品介绍面板隐藏
  35.                         /// </summary>
  36.                         DesHide();
  37.                 }
  38.                 this.transform.parent.GetComponent<Inventory>().ReFreshInventory();
  39.         }
  40.         /// <summary>
  41.         /// Raises the hover event.鼠标悬浮在物品上面的时候调用,接受一个参数,
  42.         /// </summary>
  43.         /// <param name="isOver">If set to <c>true</c> is over.</param>
  44.         void OnHover(bool isOver){
  45.                 if(isOver){
  46.                         DesShow();
  47.                 }else{
  48.                         DesHide();
  49.                 }
  50.         }
  51.         /// <summary>
  52.         /// DESs the show.将属性显示面板的位置设置到物品的位置,并设置属性面板内容,从数据库脚本中读取
  53.         /// </summary>
  54.         void DesShow(){
  55.                 cellDes.transform.position = gameObject.transform.position ;
  56.                 cellDes.GetComponentInChildren<UILabel>().text = _cellDB.dropBase.name + "\n" +
  57.                                                                                                                  _cellDB.dropBase.describe + "\n" +
  58.                                                                                                                  _cellDB.dropBase.valuses[0] ;
  59.         }
  60.         /// <summary>
  61.         /// DESs the hide.将面板的y值设置到一个看不到的敌方,来实现面板隐藏
  62.         /// </summary>
  63.         void DesHide(){
  64.                 cellDes.transform.position = new Vector3(0,10000,0);
  65.         }

  66.         void OnPress(){

  67.         }
  68. }
复制代码
DropObject.cs

  1. /// <summary>
  2. /// Drop object.怪物死亡后会掉落物品
  3. /// </summary>
  4. using UnityEngine;
  5. using System.Collections;

  6. [RequireComponent(typeof(DropObjectDataBase))]
  7. public class DropObject : MonoBehaviour {  
  8.         /// <summary>
  9.         /// Prefab.通过预设生成一个背包里面的格子
  10.         /// </summary>
  11.         public GameObject itemCellPrefab ;  
  12.         /// <summary>
  13.         /// Cellcontainer.背包格子父容器
  14.         /// </summary>
  15.         private GameObject Cellcontainer ;               
  16.         // Use this for initialization
  17.         void Start () {
  18.                 Cellcontainer = GameObject.Find("CellContainer");        
  19.         }
  20.         /// <summary>
  21.         /// Raises the mouse down event.这里设定的是鼠标点选,大家可以设置trigger触发器触发拣选
  22.         /// </summary>
  23.         void OnMouseDown(){
  24.                 CellCreation();
  25.         }
  26.         /// <summary>
  27.         /// Cells the creation.通过Instantiate克隆出一个格子预设,调用背包脚本的AddItem函数将这个clone出来的物体加到背包里面去
  28.         /// Cells the creation.把掉落的物品的三个属性传给clone出来的物品,并设定它的图集图标
  29.         /// </summary>
  30.         void CellCreation(){
  31.                 GameObject cellClone = (GameObject)Instantiate(itemCellPrefab);
  32.                 cellClone.GetComponent<DropObjectDataBase>().dblist = gameObject.GetComponent<DropObjectDataBase>().dblist ;
  33.                 cellClone.GetComponent<DropObjectDataBase>().dropBase = gameObject.GetComponent<DropObjectDataBase>().dropBase ;
  34.                 cellClone.GetComponent<DropObjectDataBase>().dbspcies = gameObject.GetComponent<DropObjectDataBase>().dbspcies ;
  35.                 cellClone.GetComponentInChildren<UISprite>().spriteName = cellClone.GetComponent<DropObjectDataBase>().dropBase.iconname ;
  36.                 if(Cellcontainer){
  37.                         Cellcontainer.GetComponent<Inventory>().AddItem(cellClone);
  38.                 }else{
  39.                         print ("Failed to Instantiate.......");
  40.                 }
  41.         }
  42. }
复制代码
然后在创建一个cube当作掉落物品模型,这个大家可以随便替换模型。
脚本关系:
Cube上拖一个Dropobject,InventoryItemCell上拖一个ItemCell脚本;
由于第一次写这个,有的地方说的不太清楚,希望有问题大家尽管问,我会在第一时间回复大家
工程源码如下:

NGUI v.3.0.1.zip (10.88 MB, 下载次数: 2582) NGUIBackPackNewV1.0.1.zip (17.78 MB, 下载次数: 8723)


作者: 请叫我腊肠大人    时间: 2013-12-21 17:02
代码原来是有注释的,后来死机了一次后就一直出bug,没办法就把中文注释给删了,哪里不懂欢迎提问
作者: 请叫我腊肠大人    时间: 2013-12-21 17:06
效果图,很简单,大家见笑了
122.jpg
作者: ku    时间: 2013-12-21 17:19
niic work,thx
作者: qidaozhilong    时间: 2013-12-21 17:47
great job,thanks for sharing
作者: hariboot    时间: 2013-12-21 20:50
不错的教程写的很好
作者: zhangzhen551    时间: 2013-12-21 21:00
必须顶起来啊,掉渣天啊!!!
作者: 烟雨    时间: 2013-12-21 22:26
收藏了,很不错的教程
作者: ZackD    时间: 2013-12-21 23:18
研究一下是否比官方的那个流程好用
作者: 我没有过去    时间: 2013-12-22 00:12
大赞,感谢楼主分享
作者: ldragon    时间: 2013-12-22 14:02
感谢楼主分享教程 鼓掌!!
作者: 岭南太狩-辉少    时间: 2013-12-22 14:38
支持此教程,赞一个。
作者: 比巴卜    时间: 2013-12-23 08:21
zhangzhen551 发表于 2013-12-21 21:00
必须顶起来啊,掉渣天啊!!!


作者: 宁唯是宁唯    时间: 2013-12-23 09:29

作者: dannyGame2012    时间: 2013-12-23 09:39
好东西啊,顶!!!!!!!!!!!1
作者: ZackD    时间: 2013-12-23 10:15
顶一下,很不错的教程
作者: solo2b    时间: 2013-12-23 14:59
位置关系有点乱啊,在说清楚点就好了,有些位置直接过去了,自己做的时候位置老是不对...谢谢
作者: akb48xpc    时间: 2013-12-23 15:16
LZ,为什么我也用的NGUI3.0.6,grid就没有RepositionNow这一项
作者: akb48xpc    时间: 2013-12-23 15:49
没有注释不好看,大概意思看懂了
作者: dannyGame2012    时间: 2013-12-23 19:39
顶啊!!!!!!!!!!!!!!!!!!!!!!
作者: 请叫我腊肠大人    时间: 2013-12-24 11:16
ZackD 发表于 2013-12-21 23:18
研究一下是否比官方的那个流程好用

其实还有后续的,后面的我会继续写,最后做个RPG教程,哈哈,今天添加了注释
作者: 请叫我腊肠大人    时间: 2013-12-24 11:16
ku 发表于 2013-12-21 17:19
niic work,thx

谢谢夸奖我会努力出后续教程的
作者: 请叫我腊肠大人    时间: 2013-12-24 11:17
qidaozhilong 发表于 2013-12-21 17:47
great job,thanks for sharing

恩恩 谢谢支持
作者: 请叫我腊肠大人    时间: 2013-12-24 11:18
hariboot 发表于 2013-12-21 20:50
不错的教程写的很好

谢谢支持啦,继续加油
作者: 请叫我腊肠大人    时间: 2013-12-24 11:18
zhangzhen551 发表于 2013-12-21 21:00
必须顶起来啊,掉渣天啊!!!

恩恩 共同学习,一起加油吧
作者: 请叫我腊肠大人    时间: 2013-12-24 11:19
烟雨 发表于 2013-12-21 22:26
收藏了,很不错的教程

谢谢
作者: 请叫我腊肠大人    时间: 2013-12-24 11:19
我没有过去 发表于 2013-12-22 00:12
大赞,感谢楼主分享

谢谢支持呢
作者: 请叫我腊肠大人    时间: 2013-12-24 11:19
ldragon 发表于 2013-12-22 14:02
感谢楼主分享教程 鼓掌!!

客气客气,哈哈
作者: 请叫我腊肠大人    时间: 2013-12-24 11:20
岭南太狩-辉少 发表于 2013-12-22 14:38
支持此教程,赞一个。

谢谢支持,共同努力
作者: 请叫我腊肠大人    时间: 2013-12-24 11:20
宁唯是宁唯 发表于 2013-12-23 09:29

谢谢来支持
作者: 请叫我腊肠大人    时间: 2013-12-24 11:21
dannyGame2012 发表于 2013-12-23 09:39
好东西啊,顶!!!!!!!!!!!1

哈哈,一起学习交流吧
作者: 请叫我腊肠大人    时间: 2013-12-24 11:22
ZackD 发表于 2013-12-23 10:15
顶一下,很不错的教程

谢谢,后面还有装备穿戴和药品使用,虽然简单,我也想写上来
作者: 请叫我腊肠大人    时间: 2013-12-24 11:23
solo2b 发表于 2013-12-23 14:59
位置关系有点乱啊,在说清楚点就好了,有些位置直接过去了,自己做的时候位置老是不对...谢谢 ...

嗯是的,我从word上帖过来的时候图片要一张张传,可能会乱了点,实在是抱歉额,不过哪里有疑问我会第一时间回复你的,下篇帖子争取更加清晰点,非常感谢来瞅瞅
作者: 请叫我腊肠大人    时间: 2013-12-24 11:25
akb48xpc 发表于 2013-12-23 15:16
LZ,为什么我也用的NGUI3.0.6,grid就没有RepositionNow这一项

恩恩,我上传了一个NGUI的包,3.0.6版本的设计时没排序,但是运行的时候自动排序,把那个省略了,但是我觉得它会改回来的,毕竟设计的时候用的较多,我上传了3.0.1的包,里面是有这个的,造成了麻烦实在抱歉
作者: 请叫我腊肠大人    时间: 2013-12-24 11:26
akb48xpc 发表于 2013-12-23 15:49
没有注释不好看,大概意思看懂了

是啊,我这次重新上传了有注释版本的,造成不便谢谢谅解
作者: 请叫我腊肠大人    时间: 2013-12-24 11:26
dannyGame2012 发表于 2013-12-23 19:39
顶啊!!!!!!!!!!!!!!!!!!!!!!

哈哈,顶太高了,一起学习吧
作者: ◕_̯͡◕    时间: 2013-12-24 14:48
求解啊,为什么把sprite做成Prefab会变大非常非常大....重做好几次了,还是没法解决.
作者: 请叫我腊肠大人    时间: 2013-12-24 17:30
◕_̯͡◕ 发表于 2013-12-24 14:48
求解啊,为什么把sprite做成Prefab会变大非常非常大....重做好几次了,还是没法解决. ...
  1. 是这样的,你这样写吧,实例化的时候把它的缩放改下
  2. GameObject itemClone = (GameObject)Instantiate(ListItem);
  3. itemClone.transform.parent = this.transform ;
  4. itemClone.transform.localScale = new Vector3(1,1,1);----->改缩放为1
复制代码

作者: 烟雨    时间: 2013-12-24 17:34
感谢更新
作者: zhangzhen551    时间: 2013-12-24 17:48
NGUI3.0.1有bug吗

作者: ◕_̯͡◕    时间: 2013-12-25 12:21
请叫我腊肠大人 发表于 2013-12-24 17:30

谢谢楼主,已经解决了,实例化的时候不知道为什么会变成216倍大,明明prefab的比例没问题.后来换了NGUI版本之后重头重做就好了.
作者: acomlf    时间: 2013-12-25 16:15
好教程,学习了
作者: D调的华丽    时间: 2013-12-25 17:53
nice 好东西 感谢分享
作者: adon001    时间: 2013-12-25 21:53
感谢,学习学习
作者: qwer4650987    时间: 2013-12-26 09:43
新手有点看不懂,但是还是支持下
作者: 所罗门封印    时间: 2013-12-26 14:11
支持分享……………………………………………………………………
作者: nianhua2008    时间: 2013-12-27 17:30
很好很强大啊!
作者: thebat    时间: 2013-12-30 16:15

感谢分享
感谢分享
作者: 小黑马    时间: 2014-1-2 18:30
不错  楼主  很大方不收币  很好
作者: 小黑马    时间: 2014-1-2 18:36
NGUI很好  
作者: 小黑马    时间: 2014-1-2 18:40
不错的NGUI  还有代码  好
作者: 幽默人生    时间: 2014-1-3 14:27
谢谢楼主!!!                     
作者: 幽默人生    时间: 2014-1-3 14:27
谢谢楼主!!!                     
作者: Memerium    时间: 2014-1-3 19:50

Thanks for sharing !
作者: hyui    时间: 2014-1-4 01:57
This is really good!
作者: wu6242420    时间: 2014-1-4 12:48
感谢楼主分享啊,学习一下!!!
作者: sunacm    时间: 2014-1-4 15:43
学习了 不错的资料
作者: sunacm    时间: 2014-1-4 15:43
学习了 不错的资料
作者: 立案吃喝    时间: 2014-1-6 19:36
请叫我腊肠大人 发表于 2013-12-21 17:02
代码原来是有注释的,后来死机了一次后就一直出bug,没办法就把中文注释给删了,哪里不懂欢迎提问 ...

腊肠大人。
打滚期待你的后续 背包物品使用
作者: ufo192    时间: 2014-1-16 11:08
是否只能在3.01上面用啊,你的包导入之后就一直报错,直至CPU使用百分之百了,我用的是4.3,NGUI3.08,
按照教程来,同样遇到了没有自动排序选项的那个问题,只有在运行的时候才会自动排序,但是那样的话就没办法复制了啊,
作者: fsafs168    时间: 2014-1-21 18:00
谢谢楼主,下下来看一看
作者: 普诺斯    时间: 2014-1-25 12:03
非常感谢
作者: Chubbaz    时间: 2014-2-7 14:30
Useful assets.
作者: tangqizuse    时间: 2014-2-20 23:33
新人学习,谢谢分享
作者: smile_lc    时间: 2014-3-2 15:00

谢谢楼主分享
作者: crwoo1435    时间: 2014-3-6 13:51
wowaaaaaaaaaaaaaa
作者: oelongeo    时间: 2014-3-6 14:37
感谢指导
作者: jacob    时间: 2014-3-6 16:47
给力啊  
作者: powercike    时间: 2014-3-6 17:03
看起來確實簡單不少
作者: zhaochuan2011    时间: 2014-3-12 15:05
回复支持一下
作者: wangwbzhw    时间: 2014-3-13 11:03
为什么点击背包里删除物品,没有立刻排序,一定要等到下一次点击才会排序呢,是NGUI设定的还是什么?求解。。
作者: verabue    时间: 2014-3-13 16:17

很棒的插件,谢谢分享
作者: 鸡贼不差钱    时间: 2014-3-14 10:20
大赞楼主!!
作者: ntg123    时间: 2014-3-15 10:53
谢谢分享
作者: fangxur    时间: 2014-3-15 14:08
给力,楼主辛苦了
作者: 散步的猫    时间: 2014-4-19 15:28
为什么每次想打开那个DEMO Unity就卡住了呢
作者: 四木公子    时间: 2014-5-31 23:07
在CellContainer下面新建一个按钮命名为ItemCell
建立一个按钮 这个按钮是指哪个?
虽然教程写的有些不详细 但是依然感谢分享 谢谢
作者: 迈克拉文    时间: 2014-6-1 01:29
很不错。值得看看
作者: 一路旭阳    时间: 2014-6-1 19:32
谢谢楼主啊!!呜呜,终于找到指路明灯的教程了!!
作者: 启蒙彩魂    时间: 2014-6-5 22:09
非常不错哈
作者: 网络骑士    时间: 2014-6-5 22:19
谢谢好心楼主
作者: herolang    时间: 2014-6-8 17:35
楼主你的工程源码怎么是zip的?不知道怎么导入到Unity哦
作者: jianjinggy    时间: 2014-6-8 17:56
感谢楼主分享
作者: liuhanxu    时间: 2014-6-10 08:29
楼主V5 87
作者: 晃晃恍惚恍惚    时间: 2014-6-27 18:51
楼主 厉害 为嘛我打开packge  图片丢失了  求解答
作者: 晃晃恍惚恍惚    时间: 2014-6-27 18:52
坐等楼主 后面的
作者: 幽默人生    时间: 2014-7-16 12:46
感谢楼主分享!!!!!!!!
作者: yanbo8806    时间: 2014-7-21 20:29
大赞,感谢楼主分享

作者: warmb2009    时间: 2014-7-22 00:28
强大的系统~~~
作者: dadalan    时间: 2014-8-28 11:06
资源很大啊
作者: 伽百叶    时间: 2014-8-28 14:26
正好也用NGUI呢,谢谢分享了
作者: shadowmap    时间: 2014-9-15 13:09
好详细!!赞一个!!
作者: yuyufrey    时间: 2014-9-18 18:37
谢谢分享~
作者: yuyufrey    时间: 2014-9-20 17:09
謝謝分享~
作者: yuyufrey    时间: 2014-9-20 17:09
謝謝分享~
作者: sunshq0503    时间: 2015-1-14 10:31
非常好,学习一下~~~~~~~~~~~~~
作者: narcissu1211    时间: 2015-1-25 11:35
收藏看看
作者: zhbt5257    时间: 2015-8-14 17:41
好东西必须顶起来。谢谢分享
作者: revengefox    时间: 2015-9-7 00:06
标记一下 以后用 哈哈
作者: chou    时间: 2016-8-15 16:33
thanks for sharing




欢迎光临 纳金网 (http://course.narkii.com/club/) Powered by Discuz! X2.5