前言 Qt 提供了QShortcut来实现快捷键的功能,不过它的响应范围只局限于窗口内。如果脱离了进程窗口,如在桌面,或者正在使用其他软件,是无法响应的。 要解决这样的问题可以使用Windows 提供的API再结合qt的一些功能来实现一个全局可响应的快捷键。 需要用到的技术 RegisterHotKey() 这是是一个winAPI函数,它的作用是像系统注册一个快捷键,注册成功后系统会根据全局的键盘输入来判断快捷键是否被触发,触发之后通过WinMessage的方式来通知注册者。 BOOL WINAPI Registe…

2022年6月2日 2条评论 5135点热度 5人点赞 大脸猫 阅读全文

前言 使用ScriptableObejct时,需要在脚本中继承它,这个类有一个特殊的地方,他生成的实例对象可以以文件(.asset)的形式存储在项目中,在游戏运行中修改对象的数据也会及时保存到文件中。也就是说希望保留下来的游戏运行数据都可以继承这个数据容器生成游戏对象来存储。 使用ScriptableObject 使用时,只需要在脚本中继承它就可以了 using System.Collections; using System.Collections.Generic; using UnityEngine; [Cre…

2022年5月8日 0条评论 2710点热度 1人点赞 大脸猫 阅读全文

前言 Unity 专为GUI对象建立了一个事件系统,用于游戏场景中的UI响应系统的一些事件。起初读到文档的时候我还是比较疑惑的,因为大多数事件和MonoBehaviour提供的事件回调都是相同的,那么为啥还要单独出一套呢?之后我又读了了下关于MonoBehaviour的文档, 原来一些回调事件需要对象有collider对象才能被触发,所以总不能为了触发回调事件也给UI对象也添加一个Collider吧。 支持哪些事件 这些接口都定义在UnityEngine.EventSystems命名空间中,但是在API文档中却没有…

2022年5月8日 0条评论 2230点热度 1人点赞 大脸猫 阅读全文

前言 为了博客文章能长期保存,并且方便切换平台,最近转为使用Markdown来编写博客。我用到的插件是WP Githuber MD,但是在使用过程中遇到一些问题。 问题 不能高亮C++ 和C#代码,只要代码块的语言类型是这两种,均无法正常高亮。 经过一些测试,得出以下结论: 不是wordpress 版本问题,切换版本依然无法解决问题。 不是插件冲突问题,单独使用该插件也无法避免这个问题 然后在GitHub 上也看到一些小伙伴关于代码高亮有些许奇奇怪怪的问题,所以只能自己解决。 解决方案 我的解决思路是,不使用WP …

2022年5月7日 3条评论 3975点热度 4人点赞 大脸猫 阅读全文

前言 Unity 除了可以使用帧动画外,还提供了制作骨骼动画的工具,工具包应该是2018左右的版本加入的,目前我使用的2020.3版本已经可以直接使用了,老一点的版本需要在package manager 中下载相应的包才行。 本文参考:https://www.bilibili.com/video/BV1vt411i7p3 准备 在建立骨骼动画之前,最好先准备一张资源图片。 如上图,我将一个火柴人肢解了,这样将四肢分解之后做骨骼动画效果相对会好一些。当然直接使用一整张图也是可以的,但是经过测试,像是手臂和大腿这种需要…

2022年5月7日 4条评论 10433点热度 6人点赞 大脸猫 阅读全文

前言 Unity 提供了 Input 类作为获取用户输入的一个工具,它可以直接获取键鼠以及一些移动设备的输入信号,包括陀螺仪、加速度传感器之类的,当然触摸信号也是支持的。 还有一种方式是通过虚拟标识来获取信号,可以由开发者将虚拟标识映射到输入涉设备上。 注意:本文只记录关于键鼠信号的输入 Input Input类提供了一些函数来获取按钮的状态: GetAccelerationEvent 返回上一帧期间进行的特定加速度测量。(不分配临时变量)。 GetAxis 返回由 axisName 标识的虚拟轴的值。 GetAx…

2022年5月5日 0条评论 4416点热度 6人点赞 大脸猫 阅读全文

前言 场效应器用于模拟一些特殊物理区域或者表面 区域效应器(Area Effector 2D) 当2D碰撞器和效应器区域接触时,可以根据设定给物体增加不同方向的力。 属性: 功能: Use Collider Mask 选中此选项可启用 Collider Mask 属性。如果未启用此选项,则所有 2D 碰撞体都将默认采用全局碰撞矩阵 (Global Collision Matrix)。 Collider Mask 此遮罩用于选择允许与 2D 区域效应器进行交互的特定层。 Use Global Angle 选中此选项可…

2022年5月5日 0条评论 3343点热度 0人点赞 大脸猫 阅读全文

前言 Unity 物理引擎中有几种关节可以使用,主要用于实现类似绳索、弹簧、车轴等效果。 关节类型 2D 关节包括不同类型。请参阅每个关节参考页面以了解有关各自属性的详细信息: 2D 距离关节 (Distance Joint 2D) - 连接由刚体物理组件控制的两个游戏对象,使这两个对象保持一定距离。 2D 固定关节 (Fixed Joint 2D) - 将两个对象保持在相对于彼此的位置,确保对象始终以给定位置和角度偏移。例如,对象好像是采用刚性连接方式相连一样:对象不能彼此远离,不能相互靠近,也不能相对于彼此旋转…

2022年5月5日 2条评论 5471点热度 1人点赞 大脸猫 阅读全文

前言 游戏地图上会有障碍物和地图边界这种设置,它们需要与游戏角色产生碰撞。跟精灵一样,需要添加collide和Rigidbody组件。 地图分层 在设置障碍物的时候,最好是将地图背景放到一个单独的Tilemap中,然后在将障碍物单独放入一个Tilemap。因为在添加collide组件时是为整个Tilemap添加。 当Tilemap有多层时,需要注意它们的渲染顺序,最好是通过调整Tilemap Renderer 中的order in Layer 属性,来决定地图的渲染顺序,值越小即越先被渲染,即值越小的地图会被后面渲…

2022年5月5日 0条评论 5685点热度 3人点赞 大脸猫 阅读全文

前言 等距瓦片地图为六边形瓦片,但是它将瓦片分为了两部分,一部分用于表示地面,一部分用于表示高度。 像是上图这种形式的瓦片,白色部分用于表示地面,而棕色部分则是代表高度,并且这些瓦片的高度可以进行堆叠,实现类似2.5d的效果。 这是Unity给出的示例,实际上是用这种瓦片构造的。 我觉得是相当炫酷了,项目地址:2D_IsoTilemaps 新建等距瓦片地图 在菜单栏中,GameObeject->2D Object->Tilemap->Isometric Z as Y 这样新建一个瓦片地图。 其中I…

2022年5月5日 2条评论 5800点热度 8人点赞 大脸猫 阅读全文
123458