MidnightGrill · 深夜食堂

THREE.JS 3D 实时渲染 · 粒子特效 · UNITY 2D 游戏架构

双版本烹饪模拟游戏。Three.js 3D 版可直接在浏览器试玩: 实时阴影、粒子特效(蒸汽/金币/完成爆发)、霓虹灯招牌、日式灯笼、浮动文字动画。 Unity 2D 版含 12 个 C# 脚本 + GameManager 状态机 + 程序化粒子(零贴图依赖)+ UI 动画曲线系统。

Three.jsWebGL 3DUnity 2DC#Particle VFXSpineUI Animation
🔥 立即试玩 3D 版 →

项目概况 · 双版本

3D
Three.js 版
12
C# 脚本
6
粒子特效
8
动画类型

深夜食堂 是一款烹饪模拟游戏,拥有两个独立版本:

🔥 Three.js 3D 版 — 实时 WebGL 3D 渲染,可直接在浏览器中试玩。 完整 3D 厨房场景(地板/墙面/木条装饰/霓虹灯招牌/日式灯笼), 实时阴影(PCFSoftShadowMap),ACES 色调映射, 粒子特效系统(烹饪蒸汽/油花飞溅/完成爆发/金币粒子), 浮动文字动画,CSS 弹性 UI 动画(订单卡片入场/Combo 弹出/按钮呼吸)。

🎮 Unity 2D 版 — 底层游戏架构验证。 12 个 C# 脚本 + GameManager 状态机驱动的完整游戏循环, 程序化粒子(零外部贴图依赖)+ UI 动画曲线系统 + Spine 骨骼动画集成。

Three.js 3D 技术栈

游戏系统架构

GameManager 状态机驱动全部游戏逻辑,6 个子系统各司其职:

粒子特效系统(VFX)

全部粒子特效由 VFXManager.csCreateProceduralMaterial() 方法 在运行时生成 32×32 像素纹理——圆形、柔光团、四角星三种形状——零外部贴图依赖

💨
烹饪蒸汽
柔光团粒子 · 缓升+渐消 · CircleShape 发射器
💥
油花飞溅
尖锐圆形粒子 · Burst 爆发 · 重力+随机旋转
完成金光
星形粒子 · SphereShape + 反重力 · 金色色调
🪙
金币爆发
星形黄色粒子 · Canvas 空间 · 订单完成触发
💫
Combo 光晕
全屏粒子层 · Combo≥5 触发 · 3秒自动销毁
📳
屏幕震动
Camera 随机偏移 · 指数衰减 · 震感可配置
// VFXManager.cs — 运行时程序化粒子纹理生成 Material CreateProceduralMaterial(Color tint, bool softBlob, bool star = false) { int size = 32; var tex = new Texture2D(size, size, TextureFormat.RGBA32, false); // ... pixel-level circle/star/soft-blob pattern generation ... var mat = new Material(Shader.Find("Particles/Standard Unlit")); mat.mainTexture = tex; return mat; }

UI 动画系统

UIAnimator.cs 提供 8 种动画原语,全部由 AnimationCurve + Coroutine 驱动, 不依赖 DOTween 等第三方库:

Spine 骨骼动画集成

角色在 Spine 中完成全套骨骼动画制作,通过 spine-unity 运行时集成到 Unity:

动画状态机由 SpineAnimationController.cs 管理,根据游戏事件切换动画轨道, 使用 SkeletonAnimation.AnimationState.SetAnimation() 实现 Crossfade 混合过渡。

技术栈

引擎: Unity 2022.3 LTS · 2D Core
语言: C# (.NET Standard 2.1)
动画: Spine 2D (spine-unity runtime) · Unity ParticleSystem · UI AnimationCurves
渲染: Post-processing (Bloom + Vignette + Color Grading) · URP 2D Renderer
输入: Mouse + Touch (pinch zoom)
数据: ScriptableObject (RecipeDatabase) · PlayerPrefs (存档)
版本控制: Git

反思与下一步

← 返回作品集