Unity
文章平均质量分 64
Zhidai_
这个作者很懒,什么都没留下…
展开
-
[Unity] GPU动画实现(五)——渲染GPU动画
顶点ID则通过UNITY_VERTEX_INPUT_INSTANCE_ID,Unity会自动将该顶点ID传入。因此,在shade中,进行如下定义,这里直接用最简单的unlit shader示例。将动画数据存在一张图片上,每帧动画数据就是一行,因此每个顶点的位置由2个属性确定。在顶点着色器中,直接进行顶点位置修改,通过顶点ID和动画时间计算取得顶点的位置。GPU动画实现的最后一步是在shader中重新进行顶点采样。片元着色器不用特别处理,直接采样输出即可。帧数 = 当前时间 / 动画时间。...原创 2022-08-05 16:10:21 · 2185 阅读 · 2 评论 -
[Unity] GPU动画实现(四)——生成动画数据
动画帧数直接使用动画长度*运行帧数来获得,同时直接通过Mesh获取顶点数(Mathf.NextPowerOfTwo可以获得大于等于传入参数的2的幂的数,据说利于压缩,这里未做求证),格式使用ARGBHalf是因为顶点位置可正可负,实际使用中精度可能不足,可视情况调整。在前面的介绍里提到该方法对顶点和动画帧数有要求,是因为顶点和动画帧数实实在在的影响了生成的动画数据大小,首先使用顶点数作为宽,动画帧数作为高,可以确定所需的图片大小为顶点数*动画帧数*16,16是因为这里使用的颜色格式为ARGBHalf。...原创 2022-08-05 16:09:46 · 1121 阅读 · 0 评论 -
[Unity] GPU动画实现(三)——材质合并
在合并完材质之后,还需要对uv进行处理,根据合并的偏移对每个uv加上对应的偏移值即可,这里不赘述,只得一提的是,这里还需要保存旧的uv,在合并网格之后,将旧的uv重新赋值回去,以免影响到其他使用到同一个Mesh的对象。调用Texture2D.PackTextures接口生成合并贴图,返回合并后的uv,这里的uv对应的是子texture在合并后的大texture的uv,而不是传统意义上片元的uv。,不同的是,第二个参数我们设置为true,因为我们已经将其合并成一个材质,因此不再需要多material。...原创 2022-08-05 16:08:21 · 1513 阅读 · 0 评论 -
[Unity] GPU动画实现(二)——网格合并
使用GPU合批的必要条件是只有一个material,因此网格合并不仅是为了将mesh合成一个,同时也是为了将texture合成一张。原创 2022-08-02 17:10:25 · 2617 阅读 · 3 评论 -
[Unity] GPU动画实现(一)——介绍
首先什么是GPU动画,GPU动画是将动画的顶点信息记录下来,通过Shader在顶点着色器阶段重新设置顶点的位置,从而渲染出动画。因此GPU动画是典型的空间换时间的方案。原创 2022-08-02 17:09:41 · 2810 阅读 · 0 评论 -
[Unity] 自定义日志系统 解决Unity Log的痛点
自定义日志系统,解决Unity原生Log的痛点原创 2022-05-05 18:14:45 · 5746 阅读 · 7 评论 -
从零开始的游戏开发 —— Component 组件
Component下称组件,是ECS架构三个主要元素之一,组件存放程序的数据。在ECS中的组件是具有以下“标记接口”之一的结构体:IComponentData- IBufferElementData- ISharedComponentData- ISystemStateComponentData- ISharedSystemStateComponentData- Blobassets-...原创 2020-08-24 14:35:31 · 650 阅读 · 0 评论 -
从零开始的游戏开发 —— Entity 实体
实体是实体组件系统体系结构的三个主要元素之一。它们代表游戏或应用程序中的各个“事物”。实体既没有行为也没有数据;相反,它标识哪些数据属于一起。系统提供行为,而组件存储数据。...原创 2020-08-10 16:47:29 · 797 阅读 · 0 评论 -
从零开始的游戏开发 —— ECS架构和DOTS简述
ECS架构ECS架构就是实体,组件,系统架构,从守望先锋开始为人所熟知,越来的,人们开始注意到ECS的强大之处,越来越多的游戏使用到了ECS的架构,Unity在2019年版本里正式发布了pakeage来支持ECS架构。目前包含以下几个包c# Job System:一个能够安全快速利用多核处理器的 System Burst:一个新的基于 LLVM 的后端编译器,能够生成高度优化后的机器码 Entites:ECS架构的核心库,使用面向数据的方式能够更容易的提供 Job System 和 Burs原创 2020-08-06 15:15:12 · 3320 阅读 · 1 评论 -
Unity 从零开始的2D游戏开发 —— [Animator] 使用动画状态机制作简单动画
动画是一个2D游戏里面必不可少的一部分,使用动画可以实现很多意想不到的功能,除了常规的人物动画,还可以实现一些周期性的运动。接下来会尝试实现一个非帧动画,一个帧动画。一、非帧动画:通过改变位置或拉伸实现的简单动画非帧动画一般用于制作人物的移动,以及其他的简单动画,是通过周期的改变物体位置或者拉伸的动画,这种动画需要人物的每部分是分开来组装的,简单的可分为四肢身体和头,复杂的连...原创 2019-07-15 20:54:16 · 2525 阅读 · 0 评论 -
从零开始的2D游戏开发 —— 像素方块生成器
洗澡的时候突发奇想,2D游戏里像素是比较简单的绘画风格,但是经常除了人物外,还有一堆乱七八糟的方块比如泥土啊,墙壁啊之类的方块,这些方块如果手画,不仅不具备随机性,而且画起来也很繁琐。因此想到,能不能写一个像素方块的生成器,来生成简单的泥土,墙壁之类像素图,从而减少美工的负担呢。于是就有这篇博客了,先写一下整体思路,然后再写具体的实现。前言:本文前部分是本人的开发流程,基...原创 2019-05-22 22:43:29 · 5255 阅读 · 2 评论 -
Unity 从零开始的2D游戏开发 —— 碰撞检测 和 用射线实现地面检测
本文一部分为半年前所写,时间间隔较大,若有逻辑上的错误敬请见谅。碰撞检测是2D游戏开发里经常要用到的东西,当我们做个游戏demo的时候,碰撞检测基本上无处不在,利用碰撞检测可以实现一些比较基础功能,比如碰撞,跳跃的地面检测,和NPC交互的检测,拾取物品的检测等等。碰撞检测必不可少的是碰撞体组件和刚体组件,在2D游戏里面也就是xxcollider2D和Rigicbody2D,同时...原创 2019-02-03 13:26:11 · 7824 阅读 · 1 评论 -
Unity 从零开始的2D游戏开发 —— 角色移动脚本
角色移动脚本是一个游戏最基础的脚本,通常也是改动最多的脚本,因此在后期会变得异常臃肿,不过这不是我们讨论的问题,本文主要说明角色移动脚本的设计和一些区别。1.通过控制角色的Transform来移动角色通过改变Transform组件里的position的值来改变角色的位置是一种简单的方法h = Input.GetAxis("Horizontal");transform....原创 2019-01-24 17:11:41 · 16327 阅读 · 2 评论