本来做完使用快捷物品栏的药品使用想测试一下,结果物品简介一直闪啊闪啊闪
没学过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时,其在场景中可能不会被激活,因为其祖先物体可能存在未被激活的。
*/
改到 Pivot 中心点 ,手动把物品简介面板中心点拖到左上,距离物品简介面板左上,xy 都错开点就可以了!不喜勿喷