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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

前言 在Unity 2D游戏开发中,Tile Map(瓦片地图)用于建立游戏场景,一般来说游戏中除了角色精灵,还需要复杂的场景作为精灵的背景。像是关卡中的地图,游戏背景,都可以使用瓦片地图来实现,而且十分方便。 什么是瓦片地图 顾名思义,瓦片地图就是瓦片拼接而成的地图,因为游戏中的场景,会有大量的重复元素,将这些元素分解为一个个相同大小的瓦片,然后再使用时在按照需求拼接成不同的场景。这样使用同一批瓦片素材就可以拼接处很多不同的场景,十分方便。 比如这是《星露谷物语》的一个海滩的场景: 这是它的瓦片素材: 将素材切割…

2022年4月26日 0条评论 7511点热度 2人点赞 大脸猫 阅读全文

前言 Unity 引擎中十分重要的两个类,GameObject 与Component。 游戏场景中的几乎所有的东西都可以使用GameObject来表示,而GameObject可以看作是一个Component的容器,大部分功能都由Component来实现。GameObejct需要某个功能时就将对应的Component添加,不需要时就移除,十分的方便。 需要注意的是,C#脚本在添加进GameObject中,也是被一个Component调用的。 游戏对象 GameObject 是 Unity 中场景的构建块,可充当用于确…

2022年4月25日 0条评论 7778点热度 8人点赞 大脸猫 阅读全文
12