Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(197评价)
价格: 4431.00元
做到黑暗之光86课时的时候,发现之前做的背包出问题
sdewqazxcds发起了问答2017-08-24
8
回复
2612
浏览

本来做完使用快捷物品栏的药品使用想测试一下,结果物品简介一直闪啊闪啊闪

 

 

没学过shader,不知道是不是RPG图集出了什么问题

 

这是物品描述的对象,并没有添加box coilider

附上控制面板的代码InventoryDes.cs

using UnityEngine;
using System.Collections;

public class InventoryDes : MonoBehaviour {
    /*物品描述*/
    public static InventoryDes _instance;
    private UILabel label;
    private float timer = 0;    //物品信息显示隐藏计时器
    
	void Awake ()
	{
	    _instance = this;
	    label = this.GetComponentInChildren<UILabel>();
        this.gameObject.SetActive(false);
	}
	
	void Update () {
	    if (this.gameObject.activeInHierarchy == true)//详见代码最后,表示物体在层次中是否是active的。也就是说要使这个值为true,这个物体及其所有父物体(及祖先物体)的activeself状态都为true。
	    {
	        timer -= Time.deltaTime;
	        if (timer <= 0)
	        {
                this.gameObject.SetActive(false);
            }
	    }
	}

    public void Show(int id)//根据id查找到物品信息
    {
        
        this.gameObject.SetActive(true);
        timer = 0.1f;//显示时间
        transform.position = UICamera.currentCamera.ScreenToWorldPoint(Input.mousePosition);//物品信息跟随鼠标
        /*ScreenToWorldPoint方法:坐标系转换
基本语法:public Vector3 ScreenToWorldPoint(Vector3 position);
其中参数position为屏幕参考点。
功能说明:此方法的作用是将参考点position从屏幕坐标系转换到世界坐标系。
此方法与方法ViewportToWorldPoint功能类似,只是此方法的参考点position中各个分量值都为实际单位像素值,而非比例值。
         */
        ObjectInfo info = ObjectsInfo._instance.GetObjectInfoById(id);
        string des = "";
        switch (info.type)
        {
            case ObjectType.Drug://药品描述
                des = GetDrugDes(info);
                break;
            case ObjectType.Equip:
                des = GetEquipDes(info);
                break;
        }
        label.text = des;
    }

    string GetDrugDes(ObjectInfo info)//药品描述集合
    {
        string str = "";
        str += "名称:" + info.name + "\n";
        str += "+HP:" + info.hp + "\n";
        str += "+MP:" + info.mp + "\n";
        str += "出售价:" + info.price_sell + "\n";
        str += "购买价:" + info.price_buy;
        return str;
    }

    string GetEquipDes(ObjectInfo info)//装备描述集合
    {
        string str = "";
        str += "名称:" + info.name + "\n";
        str += "穿戴类型:";
        switch (info.dressType)//穿戴类型
        {
            case  DressType.Headgear:
                str += "头盔\n";
                break;
            case DressType.Armor:
                str += "盔甲\n";
                break;
            case DressType.LeftHand:
                str += "左手\n";
                break;
            case DressType.RightHand:
                str += "右手\n";
                break;
            case DressType.Shoe:
                str += "鞋\n";
                break;
            case DressType.Accessory:
                str += "饰品\n";
                break;
        }

        str += "适用类型:";
        switch (info.applicationType)
        {
            case ApplicationType.Swordman:
                str += "剑士\n";
                break;
            case ApplicationType.Magician:
                str += "魔法师\n";
                break;
            case ApplicationType.Common:
                str += "通用\n";
                break;
        }

        str += "伤害值:" + info.attack + "\n";
        str += "防御值:" + info.def + "\n";
        str += "速度值:" + info.speed + "\n";

        str += "出售价:" + info.price_sell + "\n";
        str += "购买价:" + info.price_buy;
        return str;
    }
}


/*      1* activeInHierarchy状态代表物体在场景中的实际的active状态
 *      (因为物体的显示或者隐藏是通过activeSelf和其父物体的activeSelf共同决定的,必须要所有父物体
           的activeself状 态都为true 才能显示. 
           而父类的activeself 可以通过自身的activeinHierarchy来判断父类是否都是activeSelf)。
           实际上代表的是物体及其所有祖先物体的activeSelf状态。 
           而activeSelf对应于其在inspector中的checkbox是否被勾选

      2* activeSelf状态代表物体自身的activeSelf状态,所以当物体本身activeSelf为true,
      而其所有祖先物体的activeSelf状态不全为true时,这个物体
           的activeInHierarchy状态为false。

           activeSelf==物体自身
           activeInHierarchy==物体自身及其所有祖先物体==物体在场景中实际上是否激活

       3* SetActive,改变的是物体自身的activeSelf状态
           注意: 对一个物体SetActive时,其在场景中可能不会被激活,因为其祖先物体可能存在未被激活的。
 */

 

所有回复
  • 丶CK 2017-08-25

    改到 Pivot 中心点 ,手动把物品简介面板中心点拖到左上,距离物品简介面板左上,xy 都错开点就可以了!不喜勿喷 

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • 笑笑生 2017-08-25

    Depth的原因吧,设置的层与Shop面板(Depth相同了),简介层的depth,提高就行了0.0

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2017-08-25

    把弹出来的介绍的那个面板,的collider去掉,这样就不会遮挡鼠标事件了

    • sdewqazxcds 2017-08-25

      不是遮挡鼠标事件的问题,是移到物品上的时候,介绍面板一直在闪,就是出现,消失,出现,消失……而且变得很卡,然后,就会一直报出上图的Console面板的信息,这在以前是已经做好了的,但是最近用到又出问题了

      (0) 回复
    还有-4条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2017-08-25

    试下这个解决下卡顿的问题

    http://blog.csdn.net/itolfn/article/details/46817097

     

    • sdewqazxcds 2017-08-25

      已解决,我之前一直以为是Panel对象,但我没添加这个对象,所以一直找不到,原来是UIPanel组件……

      (0) 回复
    还有-4条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2017-08-25

    消失的问题,检查下,控制显示面板和隐藏的代码怎么调用的,是一直在重复的调用的,那就有可能是你的介绍面板的collider的问题,去掉介绍面板上的 

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2017-08-26

    好的

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!