Unity3D学习之旅7-RPG游戏-更新与踩坑实录

2 篇文章 0 订阅

踩坑实录

关于判断鼠标指针是否位于UI界面上

无效做法

首先给出已经失效无用的写法,注意,不要用下面的代码!
Check代码返回值就是当指针在UI层物体上时(内置UI层为第五层)返回false,否则返回True.
但经过实验,并无效果.

 public bool Check()
 {
      Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
      LayerMask layerMask = (1 << 5);
      
      RaycastHit hitInfo;
      if(Physics.Raycast(ray,out hitInfo,Mathf.Infinity,layerMask))
      {
          return false;
      }
      return true;
  }

Physics.Raycast发送的射线并不能捕获到UI层物体.

正确做法

public bool Check()
{
    if (EventSystem.current.IsPointerOverGameObject())
        return false;
    return true;
}

EventSystem.current.IsPointerOverGameObject()这个函数只会响应UI层的物体,用来判断指针是否位于UI界面上.

将类指向null

在写快捷栏使用消耗品时遇到了这样一个问题.
我对快捷栏中消耗品的逻辑时,判断数量是否为0,如果为0,将快捷栏对应的类设置为null,我想通过这样达到一个当消耗品使用完清空快捷栏数据的效果.
可是遇到了一个问题,当我重新捡到该物体时,快捷栏中的类的值竟然变化了(我没有做任何赋值操作).
那么难道设置为null是没有用的吗?
null在内存中又是怎样一种形式呢?

经查阅:

In C#, all objects are garbage collected, you can't "delete" them. When the
last reference to a given object falls out of scope, the object is liable to
collection. You can certainly null as many references as you can find, but
the object will remain alive as long as *any* reference still holds that
object.

C#的回收机制:就算指明为null,但如果其他类仍存在对这个内存的引用,引用依然存在.
也就是说我这个设为null并没有什么用,我需要采取别的方式,解决方法见下文的类的赋值.(只要声明新的内存即可,旧的失去引用的内存会被GC回收,关于GC的详细介绍可以去看C#的文档
文档传送门

类的赋值

比如Bag类有两个变量a,b;
1.表明a,b共享同一份内存,对他们中的任意一个赋值均会同时将改动作用到a,b上.

a=b;
a=c;

//此时a和b均指向c的内存地址
2.声明新内存不影响其他指向同一地址的引用型变量

a=new Bag();

这样就可以让a指向新的内存地址,b依然是原来的地址.这样a,b两个就可以脱离绑定了.

更新内容

重制版岩石怪

  • 技能为:投掷石头,被打到会造成伤害并破碎,未击中玩家则不会破碎.
  • 没有破碎的石头可以使用普通攻击击出,碰到敌人则破碎并造成伤害.

红史莱姆增加滚动技能

  • 按指定方向快速滚动,对途径玩家造成伤害.

白史莱姆增加歌唱技能

  • 唱歌使周围的怪物恢复血量.

消耗品

  • 回血药剂

背包拖拽物品

  • 背包中的物品可以拖拽来移动位置

快捷栏

  • 支持背包中的消耗品拖拽到快捷栏中
  • 玩家可以通过12345快捷使用消耗品
  • 消耗品使用有冷却时间

装备系统

  • 支持在背包中双击替换装备
  • 支持拖拽到装备槽中替换装备
  • 装备会引起属性变化
  • 目前有六个装备槽:头盔,盔甲,靴子,武器,饰品,盾牌.

增加回血机制

显示方式为绿色的"+数值"

小地图显示玩家图标和怪物图标

玩家为蓝色箭头,红色为怪物图标

部分更新截图展示

白史莱姆歌唱
在这里插入图片描述
红史莱姆在泥巴中固定角度滚动向我冲来
在这里插入图片描述

石头人投掷石头在这里插入图片描述在这里插入图片描述
穿上了头盔

更换了头盔在这里插入图片描述
使用了血瓶
在这里插入图片描述

优化

1.打开UI(技能,背包,属性)界面时,游戏暂停,关掉后恢复.

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值