基于Unity3D的双状态场景解密游戏设计与实现

基于Unity3D的双状态场景解密游戏设计与实现

**技术说明:**本文围绕Unity3D双状态场景解密游戏进行软件开发复盘,重点整理分层架构、差异化光影与色彩渲染、物品交互、碎片化叙事、关卡流程、性能需求及功能测试等技术要点。作品以心理健康科普为叙事背景,内容仅用于游戏设计与数字媒介教育方法交流,不构成医学诊断、治疗建议或健康服务宣传。

摘 要

随着社会压力增加,心理健康问题日益严峻,双相情感障碍(Bipolar Disorder)因其症状复杂且社会认知偏差显著,患者常面临误解与就医率低等问题。传统心理健康教育模式存在参与度低、缺乏共情等缺陷,而沉浸式游戏凭借其情感传递优势成为新兴载体。本文基于Unity3D引擎,设计并实现了一款以双相情感障碍为主题的解密游戏,旨在通过游戏化场景与叙事机制,模拟患者情绪波动体验,提升公众对病症的认知并消除误解。研究通过系统分析、分层架构设计及核心功能开发,构建了包含差异化光影场景、物品交互系统与碎片化叙事的游戏原型。实验表明,游戏在实现教育目标的同时,兼顾了娱乐性与技术可行性。创新点在于将心理学理论与游戏技术结合,通过隐喻化设计呈现双相情感障碍的交替状态,为心理健康教育提供了跨学科实践参考。

关键词: 双相情感障碍;Unity3D;心理健康教育;解密游戏

Abstract

With increasing social pressure, mental health issues have become a global challenge. Bipolar Disorder, characterized by alternating depressive and manic episodes, is often misunderstood, leading to low treatment rates. Traditional mental health education lacks engagement and empathy, while immersive games show unique potential in emotional communication. This study developed a puzzle game based on Unity3D to simulate the emotional experiences of Bipolar Disorder patients, aiming to enhance public awareness and reduce stigma. Through systematic analysis, layered architecture design, and core functionality implementation, the game prototype integrates dual-state scene rendering (e.g., lighting and color schemes), interactive item systems, and fragmented narratives. Results demonstrate that the game achieves educational goals while balancing entertainment and technical feasibility. The innovation lies in combining psychological theories with game technology, metaphorically presenting the alternation of bipolar states, thereby offering an interdisciplinary approach to mental health education.

Keywords: Bipolar Disorder;Unity3D;Mental Health Education;Puzzle Game

第1章 绪论

1.1 研究背景

这是一个群星璀璨、飞速发展的时代。伴随着科技进步一同到来的,是在竞争中不断加压的一系列问题,尤其是因表现形式并不明显而常常被人们忽视的心理健康问题。相较于相关知识还算普及的焦虑症、抑郁症等心理健康障碍,双相情感障碍(Bipolar Disorder,又称躁郁症)这一并不罕见的心理疾病却很少受到重视,人们对其缺乏足够的认知1-2。从世界卫生组织最新的统计数据中可以看出,全球约有4000万人受双相情感障碍困扰,其中的中国患者数量超过500万人。该病症以情绪低落、愉悦感丧失、迟钝疲劳的抑郁期与情绪高涨、语言活动增多、精力充沛的躁狂期交替发作为特征3-4。而正如大多数心理障碍患者那样,躁郁症患者常面临社会误解------人们总将这类实际上不受控的情绪交替误认为是"性格问题",而非一种需要得到及时治疗的疾病。这样的认知偏差往往导致患者忽视或耻于就医,反而导致发作频率增加,病情越发复杂5

正因如此,心理健康教育的普及是重中之重。目前社会中主要的心理健康教育仍然依赖单向传播,存在不少缺陷。

由于相关教育普及的开展形式通常以讲座、手册等为载体,人们尤其是青少年群体对这类普及的兴趣和接受度都不算高,而仅由文字描述或口头传达难以传递出情绪波动的主观体验,如同隔靴搔痒,缺乏真实感。再者,社会上仍存在一种偏见,认为寻求心理医生的帮助是一件令人羞耻的事情,这同样使得相关教育活动难以顺利进行,效果也大打折扣。

而与此形成对比的是,游戏这一"第九艺术"展现出其作为载体在潜移默化影响中的独特优势6-7。神经科学研究表明,沉浸式游戏体验可使玩家杏仁核活跃度提升,加上视觉、听觉以及交互行为的共同刺激,在情感上的共情效果显著优于传统媒介。典型案例如,在曾获得TGA年度游戏提名的平台跳跃类游戏《Celeste(蔚蓝)》中,玩家扮演登山者不断向上攀登,逃离乃至战胜"另一个自己"。而攀登动作正是对与焦虑症作斗争的过程的隐喻。独立游戏《Gris》对此的表现则要更加隐晦和艺术化,以典雅的音乐、精美的画风、细致的动画让玩家沉浸式体验游戏事件,通过色彩变化映射抑郁症康复历程的不同阶段。另一款着重音效影响的游戏《Hellblade: Senua's Sacrifice》创新性地以出现在玩家耳边连续不断的人声絮语来模拟精神分裂症患者的体验,这让这款与剑桥大学有过合作的游戏被纳入英国医学教材当中。

然而,现有的此类游戏大多聚焦于单一情绪的心理障碍,对双相情感障碍的机制化呈现仍旧缺少尝试。本研究将以Unity3D为技术基础,通过解密游戏的形式构建双相情感障碍的认知模拟,旨在将双相情感障碍的具体表现、情绪、感受通过游戏场景与氛围呈现出来,并尝试借助游戏内的相关剧情文本普及此类病症的有关常识,减少公众的认知偏差,消除相关误解。

1.2 研究现状

1.2.1 心理健康类游戏发展脉络

在国际上,对于心理健康类游戏,通常有三种不同形式的设计如表1-1:

表1-1 心理健康游戏分类

类型 代表作品 核心机制 局限性
叙事驱动型 《Night in the Woods》 分支对话系统,映射社交中的人际关系焦虑 缺乏生理指标反馈
隐喻体验型 《Sea of Solitude》 象征孤独、抑郁的怪物设计 病理特征抽象程度过高,过于隐晦
临床辅助型 《SPARX》 将认知行为疗法游戏化,借此改善青少年焦虑、抑郁症状 玩法与教育目标割裂,不能兼顾娱乐性。

而国内的相关研究则因为起步较晚而呈现两极化态势,或是轻度科普类,如同腾讯游戏《见》,通过黑屏来模拟视障体验,但交互深度不足;或是严肃辅助类,如由北大六院开发的VR恐高症治疗系统,其专业性强但普及率较低。

现有的的此类研究多数存在如下的共同缺陷:

病理还原度不足:多数作品仅呈现症状的表象特征,且并不聚焦于患者本身;

技术适配性差:大多数作品中移动端作品占比不足20%,难以触及主要受众,如青少年等群体;

1.2.2 Unity3D在游戏开发中的技术支持

Unity3D引擎作为全球使用率最高的游戏引擎(占比68%,Unity官方报告2023),其不断迭代的技术为相关游戏的开发提供了更多可能性8

(1)环境渲染技术

为减少性能开销,使用了URP通用渲染管线,其相较于默认渲染管线更加轻量化,且更加易于配置和调整。同时,URP支持实时全局光照,可用于增加场景的渲染精度。

Shader Graph组件提供了更加直观构建着色器的功能9,以节点形式创建着色器并连接功能,更加直观地构建着色器逻辑,也使图形渲染更加容易。

在基础场景渲染完成后,使用后期堆栈处理来对场景进行更多的额外处理,以此来增强图像的视觉效果,增添景深模糊、色差畸变等特效,模拟更加丰富的视觉效果。

(2)交互逻辑构建

Cinemachine插件提供了一种能够便捷控制虚拟摄像机的工具,实现自动调整摄像机的位置、角度和视野。同时提供更多镜头平滑切换或集成动画的方式。

为了依照时间为轴管理素材和事件,使用了Timeline叙事工具,此工具能够协助使用者更加灵活地处理时间轴上的主支线任务、事件与素材,以更加便捷地安排叙事逻辑。

(3)数据驱动设计

使用Unity Analytics采集玩家停留时长、交互频率、事件触发情况等数据,通过这些数据判断谜题设计难度是否合适,是否存在过于简单或过分复杂的问题。

1.3 研究意义与创新点

1.3.1 社会意义

通过沉浸式游戏体验缓解对于心理障碍的刻板印象,逐渐提升玩家对"双相障碍是脑部疾病"这一事实的认知,纠正部分类似"心理问题就是自己想不开"的误解论调。

游戏内相关文本以及提示同样能够为可能有躁郁倾向的玩家提供建议。

通过将心理健康教育与游戏相结合,本游戏能够在使玩家得到对心理障碍的正确认知的道路上起到一定作用。

1.3.2 技术意义

在Unity引擎的基础上通过组件与脚本实现点击、输入检测、射线检测等交互逻辑。

通过材质与光影组合渲染独特的氛围,增强剧情叙事的代入感。

增加玩家对心理健康教育的认知,完成心理学与软件工程的跨领域应用。

1.3.3 创新点

通过两种光影、配色、背景音乐均不同的差异场景对双相情感障碍的沉郁与躁狂两种状态分别进行演绎,将变态心理学与软件工程技术结合起来,为玩家呈现既有主题又有深意的第九艺术。

1.4 论文组织结构

本文共分六章,结构框架如下:

第1章 绪论:阐述研究背景与意义,分析国内外发展现状,明确创新点与技术路径。

第2章 系统分析:进行需求分析,完成技术可行性验证。

第3章 系统设计:详细说明关卡架构、游戏机制设计,呈现UI设计方案。

第4章 系统实现:解析Unity URP渲染优化、C#交互逻辑编码、Blender模型建模等关键技术实现过程。

测试与优化:测试并优化游戏模型、交互、事件、存档系统。

第6章 总结与展望:总结研究成果,分析移动端适配等未来改进方向。

第2章 系统分析

2.1 目标用户分析

本游戏面向的玩家基本由解密游戏爱好者、心理学相关从业者、双相情感障碍患者组成。不同玩家的核心诉求不同,其中解密游戏爱好者往往以探索解密,休闲娱乐为主,也可能包含少量获取心理学知识的目的。心理学相关从业者则追求病理还原程度与游戏教育意义,更加注重专业性。双相情感障碍患者则在游戏中追求内心情绪共鸣,希望能够在过程中明晰对自我的认知。

用户与系统交互用例图如图2-1:

图2-1 系统用例图

2.2 系统功能分析

进行游戏系统功能性需求分析以及各项功能性论述,功能性分析应明确游戏系统应达成的具体功能目标,以满足玩家的需求和期望,同时保证游戏的流畅运行与良好体验。

(1)数据存储

当玩家开启一个"新的游戏"时即创建一个新的存档,存档保存在本地。当玩家选择读取存档时,则读取已存储数据载入相应存档。系统将在经过重要节点时以及退出关卡时自动存档保存游戏进度,防止数据丢失。存储数据内容包括:

关卡状态、场景状态、剧情状态、物品收集数据等游戏进度数据;

玩家坐标、朝向、当前场景信息、背包物品等玩家状态数据;

音量大小、键位绑定等系统设置数据:

存档时间、游戏版本号等基础数据。

(2)角色控制

角色控制系统是游戏的核心。玩家通过第一人称视角操纵游戏角色在场景中解开一个又一个谜题来完成游戏流程,体验游戏剧情。使用键盘和鼠标控制主角的位置移动、视野移动与交互10,通过合理的键位绑定与速度、视野等限制来增加玩家在第一人称视角下的的代入感。

(3)交互系统

游戏的谜题形式以玩家与物品、物品与物品、物品与场景的交互存在并触发。对于物品,定义一下几种交互状态:

拾取:标记为"可拾取"的物品与玩家进行"拾取"交互,拾取后物品转换为"携带",进入背包。

携带:玩家拾取物品后,物品进入背包,此时状态为"携带"。

使用:玩家选择背包中的物品,与场景或另一样物品交互,产生使用成功或使用失败两种状态。

使用成功:物品可进行"使用"交互时,使用后物品返回背包或销毁。

使用失败:物品不可与选中物品进行"使用"交互,物品返回背包。

销毁:使用成功后不需要再次使用的物品销毁。

(4)叙事系统

游戏的剧情通常以一条时间轴为中心,围绕其展开11。随着玩家游戏进度的推进,剧情内容将以旁白、主角内心独白或对话的形式展开。同时,由于地图存在收集要素,部分剧情将以碎片化叙事的形式存储在散布关卡中的收集要素里。主线经过氛围与音效渲染,简洁,直接,并使玩家更易于感受情绪;碎片叙事内容分散、只有文字,更加深入具体,呈现剧情之外的细节。

2.3 非功能性分析

除了功能性需求之外,非功能性需求也是优化用户体验的重要部分。非功能性需求是指软件系统除了实现具体业务功能之外,所需要满足的其他方面的需求。它关注的是系统的性能、可靠性、易用性、安全性、可维护性、可扩展性等特性,而不是直接与业务功能相关的需求。

2.3.1性能需求

游戏的运行稳定帧率、内存占用、加载时间、响应时间等,都是游戏性能的重要组成部分。运行稳定、帧率高、加载时间短均为一个游戏的性能优化是否优秀的判断标准,更是玩家体验的重要部分。卡顿、异常发热、崩溃等状况则应尽可能排除。通过GPU Instancing批量渲染可显著提高渲染性能,提升帧率;利用Unity的Addressables系统将游戏资源进行合理的分包,并根据游戏的需求动态地加载这些资源包则能够优化内存占用;而使用异步加载可以减少加载时间,此时展示预生成的进度条可以让玩家直接了解到加载进度,提升游戏体验。

2.3.2易用性需求

绝大多数PC玩家的基础操作习惯都是一致的:WASD控制移动,鼠标控制视角,点击触发事件交互。沿用这样约定俗成的操作习惯能让大部分玩家都轻易地上手,而不需要太过直接的引导。在此基础上,提供键位更改选项则能让对这套习惯并不满意、或拥有自己的一套逻辑的玩家也能够符合自己的操作习惯。

2.3.3安全性需求

游戏系统安全通常包含数据安全与内容安全两部分:

数据安全即保证玩家保存在本地的存档与游戏数据不会丢失或意外损坏,内容安全则为确保游戏程序本身不包含病毒、木马或后门漏洞,避免成为攻击玩家设备的载体。确保内容合规,避免包含暴力、恐怖或政治敏感元素。

2.4 系统可行性分析

2.4.1 技术可行性分析

本游戏采用Unity3D引擎2022.3官方长期支持版本作为基础引擎,以C#的MonoBehaviour传统架构作为核心架构,辅以Blender模型工具对已有资产进行适当更改以及相应模型构建,确保系统的技术可行性。

2.4.2 操作可行性分析

本游戏使用绝大多数PC玩家所适用的操作习惯,确保游戏操作的简单易懂。确认游戏引导清晰,可交互物品高亮轮廓显示正常,不容易在视野中被忽略,确保游戏的操作可行性。

2.4.3 经济可行性分析

游戏的开发成本较低,由学校基础设施即可承担,无需额外的服务器或软硬件支持。其中大部分模型资产均为免费使用的资源库,少部分由免费工具Blender搭建,因此本游戏在经济方面完全可行。

第3章 系统设计

3.1 游戏架构设计

为了确保系统各部分独立性,提升开发效率与可维护性,游戏系统采用分层架构设计,共分为以下四层:

资源层:

包含使用Unity资产库与Blender获取和制作低多边形场景资产,面数控制在5k-15k区间,风格统一的模型资源、使用符合场景氛围的风格化贴图,确保视觉效果统一,贴图分辨率适中,既保证游戏流畅性,又能展现丰富的细节,增强玩家的游戏体验的贴图资源、不同风格场景应用不同环境音的音频资源、以XML格式存储游戏剧情、提示文本,的文本资源:

(2)逻辑层:

负责状态管理与事件系统,其中状态管理使用有限状态机控制如下游戏流程12

初始状态 → 主菜单 → 关卡选择 → 游戏进行 → 暂停/存档 → 结束状态

事件系统则使用Unity内置的EventSystem组件配置,实现UI交互和跨模块通信。

(3)表现层:

使用URP通用渲染管线渲染场景,为不同场景配置不同参数,负责不同场景表现。

(4)数据层:

使用JSON序列化存储结构进行游戏本地存档存储的存档系统,存储游戏数据,存档系统核心代码见图3-1。

图3-1 存档系统核心代码

3.2 剧情设计

游戏剧情通常分为主线与支线13。主线剧情出现在游戏通关路程的必经之路,在重要节点或干脆是前进的道路上出现;支线剧情则散落各处,需要细心搜寻。为确保剧情明晰,本游戏只设置一条主线与两个结局,以及一些散落场景各处的收集要素作为剧情补充。解开所有谜题则达成正常结局条件,完整收集所有收集要素则达成真结局条件。两种结局仅在结局剧情上作出区分:

主线剧情中,玩家扮演的游戏主角从一个黑暗的梦境中"醒来",发现自己被困在了地牢中。玩家需要寻找线索,解开谜题,逃出当前环境。在游戏流程中,穿插旁白与主角的内心独白,以暗示封闭式环境的关卡实际上是主人公自我封闭的内心状态,而主人公变化的心理活动则显示出他的情绪状态。

散布在地图中的可收集线索则作为剧情的补充,暗示主角实际上仍旧在梦境中,而不同氛围的关卡实则是主角不同情绪特征的显化。在正常结局(未集齐日记结局)中,主角闭上眼睛睡去,回到了一成不变的梦境中;在真结局(日记全收集结局)中则给出了一段主角的独白,选择从梦境中醒来迎接真实的生活,暗示主角选择了积极地对抗自己的心理障碍,向前走迎接新的生活。

3.3场景设计

本游戏共分为初始场景、关卡一、关卡二共三个主要场景合集,这些场景均由Unity资产库以及Blender建模模型共同完成搭建,配置不同模型、贴图、背景、灯光14

3.3.1初始场景

初始场景为色调灰暗、沉郁的破碎神殿风格场景。其作为主菜单背景,以暗示主角实际上身处梦境而非现实。该场景由破损石柱、碎石、雕像与未点燃的篝火组成,玩家与篝火交互后将其点燃,随后进入主界面。

3.3.2关卡一

本场景集合由三个房间、一条走廊搭建而成。其为象征抑郁态的关卡,因此总体风格阴沉。谜题线索设计在各个房间中,房间由走廊连接,关卡出口在走廊尽头。

玩家在场景中搜索密码、火把、钥匙等物品,最终打开走廊尽头的大门,结束本关。

3.3.3关卡二

本场景集合由三层塔楼搭建而成,为象征躁狂态的关卡,因此总体风格更加明亮。谜题线索设计在各层塔楼,塔楼由楼梯相连。玩家需打开通向上层的通道,通过重复往返各层搜集材料,最终修复塔顶灯光系统点亮灯塔通过本关。

3.4 系统UI设计

游戏系统的UI设计往往以简洁为主。为了不喧宾夺主遮盖关卡内容及线索,游戏UI应当风格统一、与背景做出区分、简洁明了。且为了美观考虑,UI风格应当向游戏风格靠拢。由于游戏场景大多数为暗色,且亮度较低,因此本游戏选择浅灰色与白色作为UI主配色,在背景中凸显文字增强可读性的同时,提升透明度以减少UI对场景的遮挡。

界面系统采用UGUI Canvas分层方案,依照场景分为主菜单界面、游戏内界面、过渡界面、结束界面,分别设计不同UI,确保视觉层级与交互逻辑清晰。

3.4.1主界面UI

主界面背景层展示预先制作好的一个场景。右侧为标题区域,为与背景协调,标题使用浅灰白色#F8F8FF,左侧为核心功能区域,自上而下分别排列按钮:新游戏,继续游戏,存档,日记收集,设置,退出游戏。文字颜色统一为白色#FFFFFF。鼠标悬停在按钮上时,该按钮将会获得灰色#BEBEBE边框,这样的设计简洁明了,将核心功能全部凸显出来,方便玩家使用。

存档界面以半透明灰色为背景底色,顶部为标题,下方为存档栏位,字体颜色为白色。

日记收集界面与存档界面使用同一套界面逻辑,存档栏位改为日记栏位,点击展示日记详细内容。

3.4.2游戏内UI

游戏内UI由字幕、背包栏、物品交互提示组成。

字幕区域位于窗口底边,由半透明黑底与白色字幕组成,触发剧情时出现,剧情结束后消失。

背包栏位于窗口右侧,鼠标移动到最右侧时展开,移出区域则折叠。

物品交互提示由轮廓高亮显示与提示文字组成。当光标移动到可交互物品附近时,该物品将由浅灰白色描边显示;当光标停留在可交互物品上时,在物品附近显示提示字幕提示物品名称。

由以上部分共同组成游戏内UI,确保风格统一,不遮挡视野。同时确认提示能够清晰显示,并且易于理解。

3.4.3过渡界面UI

过度界面由全屏黑色遮罩作为背景,在正中央展示白色过渡字幕,等待数秒后在屏幕底边中央显示提示"点击以继续",点击后跳转至下一关。

确保过渡界面不会分散玩家注意力,而是作为情绪的短暂休息存在,因此选择全黑色背景。

3.4.4结束界面UI

结局剧情展示完毕后进入结束界面,展示"恭喜通关"字样,点击屏幕任意部分跳转回到主界面。

结束界面作为收束,只显示简单的字幕表示通关。

3.5游戏机制设计

3.5.1 全局设计

游戏总流程分为初始、第一关、第二关、结局。

(1)初始

玩家初次进入游戏时,与初始场景中的篝火交互进入主界面UI,随后选择"新游戏"进入第一关,流程如图3-2:

图3-2 主界面流程

(2)第一关

第一关场景为地牢,由走廊、房间A、房间B、房间C组成,通关流程如图3-3。

玩家初次进入第一关时出现在房间A;搜索房间A获取火柴,点亮火把后可搜索得到房间A的钥匙、密码一、日记一,使用房间A的钥匙打开房门,可进入走廊。

走廊连接房间A、房间B、房间C,进入房间B,搜索得到蜡烛、小刀,保险柜(上锁)。使用蜡烛和小刀获得日记二,在房间C使用蜡烛点亮后可搜索得到保险柜钥匙、日记三。在房间B使用保险柜钥匙得到密码二,组合密码一与密码二获得密码,在走廊尽头的大门处输入密码通过第一关。

(3)第二关

第二关场景为灯塔,由灯塔一层、灯塔二层、灯塔三层组成,通关流程如图3-4。

玩家初次进入第二关时出现在灯塔一层;搜索灯塔一层获得木梯、燃料、胶带,抽屉(打不开);使用木梯可前往灯塔二层。

在灯塔二层可获得未点燃的煤油灯,使用燃料获得点燃的煤油灯,并点亮场景。点亮后可搜索得到螺丝刀、断裂的电线A、日记四。在灯塔一层使用螺丝刀与抽屉(打不开)交互可获得三层钥匙。在灯塔二层使用三层钥匙可打开通往灯塔三层的入口,进入第三层。

灯塔三层搜索可获得断裂的电线B、日记五,发电机(缺少燃料),塔顶灯(缺少能源)。分别使用断裂的电线A、断裂的电线B与发电机、塔顶灯交互,并使用胶带与电线交互,可将发电机与塔顶灯连接;使用燃料与发电机交互,随后可以打开开关,点亮灯塔,通过第二关。

图3-3 第一关流程

图3-4 第二关流程

结局

结局检测日记搜集进度:集齐所有日记进入结局A:真结局,未集齐所有日记进入结局B:假结局。游戏全局流程如图3-5:

图3-5 游戏全局流程

3.5.2谜题设计

谜题设计设计谜题状态、玩家状态、环境状态。

(1)谜题状态

当谜题尚未被玩家发现,或并未满足触发条件时,处于未解锁状态。此时玩家与谜题交互(如尝试开门、输入密码等)时,谜题进入交互中状态。当玩家正确解开谜题时,谜题进入完成状态,此时可进入新场景、获取物品或解锁新谜题;当玩家错误解决谜题时,进入失败状态,谜题重置。谜题状态如图3-6:

图3-6 谜题状态图

(2)玩家状态

玩家在场景中搜索可交互物品、线索等,成功获取时持有道具,为道具持有状态;玩家尝试使用道具、线索与谜题交互解开谜题,此时进入谜题交互状态;玩家在场景与区域之间移动,为位置移动状态。玩家状态如图3-7:

图3-7 玩家状态图

(3)环境状态

当某些物品被使用或某一个谜题被解决时,往往会对相应环境造成影响,如点燃火把、打开灯,将改变场景灯光,此时环境状态为场景变化;或打开某个门锁、使用梯子,此时环境进入触发机关状态,打开相应的门或通道。环境状态如图3-8:

图3-8 环境状态图

3.6时序图设计

为展示游戏核心交互流程,选择使用基于前部分关卡设计绘制的时序图分别描述第一关与第二关玩家操作与系统响应的逻辑链条。

第一关时序图

第一关时序图如图3-9:

图3-9 第一关时序图

第二关时序图

第二关时序图如图3-10:

图3-10 第二关时序图

第4章 系统实现

4.1开发环境

选择恰当的工具无疑能显著提升游戏开发的效率。本游戏采用Unity3D引擎开发,选用了官方持续提供支持的Unity3D 2022.3.53f1c1版本,这个版本以其稳定性和高效性著称,为游戏开发提供了坚实的基础15。利用它进行场景构建、物理仿真以及编译执行,以确保游戏的流畅性和稳定性。编程方面使用Visual Studio 2022工具进行C#脚本的编写和调试。模型资产的创建则依赖于3.1.2版本的Blender建模软件,为了优化性能,则利用Unity Profiler的内置功能对CPU、GPU和内存的性能进行监控。通过细致的性能分析,确保游戏的运行流畅。

4.2核心功能实现

4.2.1第一人称控制系统

移动控制:基于Unity已有的CharacterController组件实现基础的移动逻辑:W键控制前进,A键控制向左移动,S键控制后退,D键控制向右移动。在Unity输入管理器中定义Horizontal和Vertical轴向,分别对应键盘A/D和W/S键。

核心代码片段如图4-1:

图4-1 移动控制核心代码片段

将默认速度调整为5,默认重力为9.81(模拟正常重力),确保玩家脱离地面时能正常落地;并完成第一人称视角移动的实现。

由于初始移动速度较慢,对速度进行优化,增加按住Shift键加速奔跑功能,如图4-2。

奔跑速度调整为8,此时按住LShift键可进行奔跑。

图4-2 加速奔跑功能

视角控制:在挂载在第一人称视角摄像机上的脚本FirstPersonController.cs中编写鼠标控制第一人称视角旋转的逻辑,通过Input.GetAxis("Mouse X/Y")获取鼠标位移量,并乘以灵敏度系数,其中代码核心片段如图4-3:

图4-3 第一人称视角核心代码片段

实现通过鼠标控制摄像机的视角移动,对摄像机进行视角限制,限制摄像机垂直旋转角度在-90°到90°之间,防止视角翻转,参数如图4-4:

图4-4 摄像机垂直参数

4.2.2物品交互系统

(1)物品拾取逻辑

射线检测机制:

从摄像机中心发射一条射线,检测前方可交互物品,核心代码如图4-5:

图4-5 射线检测核心代码片段

通过LayerMask仅检测标记为"Interactable"层的物体,避免误触环境元素,防误触代码如图4-6:

图4-6 防误触代码片段

射线检测优化:对射线增加距离限制,设置pickRange=3m,超出范围则不检测。

(2)背包栏实现

物品槽位存储物品信息,代码如图4-7:

图4-7 物品栏代码片段

背包栏交互逻辑:拾取物品---遍历背包栏寻找空置槽位---存放。

若未找到控制槽位,则输出警告"背包已满",核心代码如图4-8:

图4-8 背包栏满核心代码片段

利用使用Unity的EventTrigger组件实现背包栏中物品的拖拽功能,拖拽功能核心代码片段如图4-9:

图4-9 物品拖拽功能核心代码片段

4.2.3环境变更实现

当玩家解开谜题后,有时环境会发生相应变化,打开大门、出现光源。

(1)开门

使用C#脚本并将脚本挂载至门的模型来在开门时使门的模型绕着门轴旋转90度,实现开门效果,代码如图4-10:

图4-10 开门功能核心代码片段

开灯

通过C#脚本挂载至火把、灯泡上,实现在预定处增添光源效果,代码如图4-11。

图4-11 开灯核心代码片段

光源预设值如图4-12:

图4-12 光源预设值

4.3界面UI效果实现

4.3.1整体架构实现

Unity引擎提供有方便的界面制作功能。将所有UI均挂载在同一个Canvas下,采用Screen Space - Camera渲染模式绑定到主摄像机,实现3D UI效果。

子UI分类为MainMenuUI(主菜单)、InGameUI(游戏内)、TransitionUI(过渡)、GameOverUI(结束)四个独立面板,通过UIManager控制显隐。

UIManager通过GameState枚举切换活动UI,如:

进入游戏时调用UIManager.Instance.SetGameState(GameState.InGame),关闭主菜单并显示游戏内UI。

4.3.2主菜单UI实现

使用StartCoroutine(LoadGameScene("Level1"));加载场景UI如图4-13。

功能按钮逻辑:

新游戏:清空存档数据,初始化新游戏状态。

继续游戏:调用SaveSystem.LoadGame()加载最近一次进行的存档。

退出游戏:调用Application.Quit()。

图4-13 主界面UI

4.3.3游戏内UI实现

(1)交互提示

在InteractableSystem射线检测到可交互物体时调用如图4-14代码,传递物品名称:

图4-14 交互提示核心代码片段

(2)字幕系统

通过Unity事件或脚本调用显示字幕,当事件触发时,在屏幕底端显示字幕文本如图4-15,示例代码如图1-16。

图4-15 游戏内字幕

图4-16 底端字幕提示例

字幕在显示一定时间(3秒)后自动消失,代码如图4-17:

图4-17 字幕消失

字幕显示优化:

更清晰的字体渲染:采用Unity引擎内置TextMesh Pro的SDF字体,确保高清显示;

简单的动画效果:通过DoTween插件实现基础的渐入渐出动画,参数如图4-18:

图4-18 动画效果参数

(3)高亮提示

使用Shader Graph可视化着色器创作工具实现如图4-19的物品轮廓动态高亮,通过Step节点生成轮廓遮罩,配置参数如下:

material.SetFloat("_Highlight", isHovered? 1: 0);

图4-19 可交互高光描边

4.3.4过渡界面UI实现

淡入淡出效果实现代码如图4-20:

图4-20 渐进效果代码片段

循环两次分别处理淡入(0→1)和淡出(1→0),中间等待0.5秒显示过渡文字,过渡界面如图4-21:

图4-21 过渡界面

4.3.5游戏结束界面实现

自动返回主界面逻辑:StartCoroutine(ReturnToMenu());

结束界面如图4-22:

图4-22 通关界面

4.4场景实现

4.4.1初始场景

初始场景为主界面场景,在玩家第一次进入游戏时将位于如图4-23的本场景中央,点燃篝火后跳转至主界面。

本场景使用碎石、罗马柱、破损雕像搭建,部分模型使用Blender建模,统一使用简单材质与自然光源营造不真实感,复杂模型取自Unity资产库资源。

图4-23 主界面场景模型

4.4.2关卡一

本场景模型使用Blender建模,并设置了简洁贴图,减少信息量以产生较为阴郁的氛围感。使用强度较弱的点光源降低画面亮度以贴合氛围,走廊、房间A、房间B、房间C模型分别如图4-24、图4-25、图4-26、图4-27:

图4-24关卡一走廊模型

图4-25关卡一房间A模型

图4-26关卡一房间B模型

图4-27关卡一房间C模型

4.4.3关卡二

本场景使用了较为复杂的贴图和低面数模型,大部分贴图均取自Unity资产库,与关卡一形成对比,通过较多信息量的画面营造更加兴奋、活跃的氛围感,第一层、第二层、第三层模型分别如图4-28、图4-29、图4-30:

图4-28 关卡二第一层模型

图4-29 关卡二第二层模型

图4-30 关卡二第三层模型

第5章 测试

游戏开发过程中,出现错误、bug乃至开发中未察觉的漏洞是难以避免的。为尽最大可能减少这种情况的出现,对游戏进行测试是不可或缺的。

5.1模型测试

3D游戏的模型碰撞、穿模问题十分常见。玩家载体与地面、墙面模型之间的穿模问题可能导致意外的模型卡死,或玩家提前离开当前场景。而不合理的模型碰撞则可能导致路径被阻碍、物品无法获取等问题。

通过不断测试并仔细调整模型碰撞箱,确保碰撞体与实际体积匹配,避免间隙或重叠来确保玩家正常游玩时不会遇到此类恶性bug,导致游戏流程无法正常进行。模型测试用例如表5-1:

表5-1 模型测试用例

ID 测试项 输入数据/操作步骤 预计结果 实际结果
1 地面碰撞检测 控制角色在地面移动 角色始终与地面保持接触,不会下陷或漂浮 角色正常行走,无下陷或漂浮现象
2 墙壁碰撞检测 控制角色向墙壁移动 角色无法穿过墙壁,碰撞后停止移动 角色被墙壁阻挡,无法穿模
3 狭窄通道碰撞 控制角色通过狭窄通道 角色能够顺利通过,不会被卡住 部分障碍物通道存在通过卡顿现象
4 家具碰撞检测 控制角色与场景中的家具交互 角色无法穿过家具,碰撞后停止移动 家具碰撞检测正常,无穿模现象
5 场景边界检测 控制角色移动到场景边界 角色无法离开场景边界,被阻挡 场景边界检测正常,角色无法越界

5.2交互测试

物体交互是本游戏解密逻辑的基础。交互系统出现问题必然导致游戏流程出错甚至无法进行,因此仔细检查玩家与物品、物品与物品、物品与场景间的交互逻辑正常可靠。

通过标签区分可拾取物品与不可拾取物品,确保物品的拾取-使用-交互-销毁逻辑链完整。调整射线检测的射线范围,确保玩家靠近物品后才能与其交互。通过不断拾取物品填满背包栏来测试背包栏已满的提醒是否运作正常,并刻意尝试使用错误物品进行交互,以测试物品交互之间的对应关系是否正确,测试用例如表5-2:

表5-2 交互测试用例

ID 测试项 输入数据/操作步骤 预计结果 实际结果
1 角色移动控制 使用WASD键控制角色移动 角色能够流畅地前进、后退、左右移动 角色移动正常,无卡顿现象
2 视角控制 移动鼠标控制视角旋转 视角能够平滑旋转,垂直角度限制在-90°到90°之间 视角旋转正常,无翻转现象
3 靠近可拾取物品 物品被拾取并存入背包,背包栏显示更新 物品拾取成功,背包栏更新正常 靠近可拾取物品,检测范围为3m
4 背包容量测试 拾取物品直至背包满 背包满时显示提示"背包已满" 提示显示正常
5 物品使用 选择背包中的物品与场景中的目标交互 正确物品触发预期效果,错误物品不触发效果 交互逻辑正常
6 环境变更(开门) 使用钥匙与门交互 门旋转90度打开,玩家可通过 门正常打开,无穿模现象
7 环境变更(开灯) 使用火柴点亮火把 火把被点亮,场景光照增强 房间A光照强度过高

5.3事件测试

游戏剧情与事件通过时间轴管理。通过依照正常流程完整通关游戏来测试事件是否在恰当节点触发,同时验证游戏结局是否能够依照设计的条件正确触发。通过收集、遗漏日记来测试提示系统,尝试使用异常方式跳关,来寻找游戏流程中可能存在的漏洞,测试用例如表5-3:

表5-3 事件测试用例

ID 测试项 输入数据/操作步骤 预计结果 实际结果
1 主线剧情触发 按流程推进游戏 剧情在预设节点准确触发 剧情触发正常
2 结局分支(真结局) 收集所有日记并通关 触发真结局剧情 真结局触发正常
3 结局分支(假结局) 遗漏部分日记并通关 触发假结局剧情 假结局触发正常
4 字幕系统 触发剧情事件 字幕在屏幕底端显示,3秒后自动消失 字幕消失速度过快
5 过渡界面 完成关卡后进入过渡界面 显示过渡字幕,点击后跳转至下一关 过渡界面功能正常
6 结束界面 通关后进入结束界面 显示"恭喜通关"字样,点击返回主界面 结束界面功能正常

5.4存档测试

进行新建存档、读取存档、覆盖存档、删除存档的常规操作,检查存档数据一致性。通过在游戏进程中强制关闭进程,测试自动存档功能的可靠性,测试用例如表5-4:

表5-4 存档测试用例

ID 测试项 输入数据/操作步骤 预计结果 实际结果
1 存档功能(手动存档) 在游戏进程中手动存档 存档数据完整保存,可读取 手动存档功能正常
2 存档功能(自动存档) 触发自动存档节点 自动存档成功,数据完整 自动存档功能正常
3 存档恢复 强制关闭游戏后重新启动 读取最近一次完整存档,恢复进度 存档恢复正常
4 删除存档 选择已有存档,选择"删除存档"选项 系统提示"是否删除存档?",确认后存档被删除 存档删除成功,存档列表中不再显示该存档
5 删除存档验证 1. 创建存档A2. 删除存档A3. 检查存档列表 存档列表中不再显示存档A 存档A已从列表中移除

5.5测试总结

通过系统化的测试流程,本游戏原型已实现设计目标,各核心系统运行稳定,为心理健康教育提供了可行的游戏化解决方案。测试中发现的问题已大部分修复,剩余问题将在后续迭代中解决。

5.5.1测试环境

硬件配置:AMD Ryzen 7 5800H/32GB DDR4 3200MHz/NVIDIA RTX 3060 6GB

操作系统:Windows 11

测试Unity版本:2022.3.53f1c1

5.5.2测试覆盖范围

本次测试覆盖了游戏所有核心系统,包括负责移动与碰撞的模型物理系统,负责物品拾取、使用以及背包的交互系统,负责剧情触发以及分支真假结局的叙事系统,以及负责存读档功能的数据系统。

5.5.3测试结果分析

(1)模型系统:

角色移动和碰撞基本正常,发现一处障碍物碰撞箱不合理,已修正。

(2)交互系统:

基础交互逻辑稳定,环境变化触发准确,存在一处光照强度过高,进行调整。

(3)叙事系统:

主线剧情正常触发,优化了三处对话字幕的显示时长。真/假结局分支判断准确。

(4)数据系统:

手动存档功能完整,自动存档功能正确运行。游戏异常关闭可能导致存档数据丢失,通过定时自动存档并在崩溃后保存读取上一次完整存档解决。

5.5.4遗留问题

仅适配PC端,未进行多端适配。极端硬件配置(集成显卡)下存在帧率降低问题,并且存在少数非关键路径并未测试。

5.5.5改进建议

优化低端硬件上的渲染性能,并收集更多玩家反馈,完善游戏。

第6章 总结与展望

本文通过对心理学中双相情感障碍这一病症的探讨,发觉当今社会心理健康教育普及并不能跟上日益发展飞速的社会带给人们的心理压力,同时由于此类教育的普及不到位,导致人们往往对诸如焦虑症、抑郁症、双相情感障碍等一系列心理学病症产生误解,甚至往往产生讳疾忌医的现象。为此,本文提出通过将心理学与Unity引擎结合开发一款解密游戏的必要性与可行性,并详述了游戏开发工作的相关内容,包括对用户、需求与可行性的分析,以及游戏系统的功能性、非功能性以及谜题内容的设计,以及系统核心功能的实现等。在游戏的实现过程中,应用Blender建模、C#脚本编写、Unity3D引擎编译并运行,实现了游戏的基本交互逻辑。

6.1研究成果总结

6.1.1研究目标的实现

成功构建了基于Unity3D的双相情感障碍解密游戏原型,实现了以下核心功能:

实现了流畅的第一人称视角控制系统与物品交互逻辑,并利用Unity URP渲染管线优化了渲染效率;

构建了一个初始场景与两个完整的关卡场景,通过差异化的光影、配色与音效设计模拟情绪交替时的感受;

构建完整的谜题逻辑,以物品之间的交互系统为谜题基础,完成了数个"找钥匙"类型的谜题设计;

搭建了一条完整的剧情主线,并辅以碎片叙事完善了剧情细节。

6.1.2技术实践

基于C#脚本与Unity组件化开发模式,完成了角色控制、背包功能、交互系统、游戏UI等模块的代码实现,并同时采用Blender建模与Shader Graph着色器编辑,实现了风格统一的低多边形场景资产,兼顾性能与艺术表现。

6.2不足

当前游戏仅支持PC端运行,缺少多平台互通,并不足以覆盖多数用户,尤其是未能适配移动端用户,减少了普及范围。

剧情展示不够直观,本游戏大多采用隐喻暗示来展现双相情感障碍患者的内心情绪,缺少对此类情绪的直接展示;由于部分剧情分散在收集要素中,可能导致玩家对剧情理解存在一定的困难。

6.3展望

未来预期进行多平台适配,将游戏扩展至移动端(Android),优化触屏操作,覆盖更加广泛的玩家群体。

优化叙事方式,增加过场动画与角色对话,更加直观地展现剧情;并引入更多心理学专业知识,提升教育价值。

展开更加大规模的用户测试,收集更多玩家反馈数据并据此对游戏体验进行优化。

参考文献

Dols, Annemiek,Beekman, Aartjan.Older Age Bipolar DisorderJ.CLINICS IN GERIATRIC MEDICINE,2020,36(02):281-+.DOI:10.1016/j.cger.2019.11.008.

Connors, Michael H..Paediatric bipolar disorder and its controversyJ.ACTA NEUROPSYCHIATRICA,2023,35(02):96-103.DOI:10.1017/neu.2022.28.

方贻儒,洪武,刘铁榜,等.《中国双相障碍防治指南》(2025年版)计划书J.中华精神科杂志,2023,56(06):413-417.DOI:10.3760/cma.j.cn113661-20230919-00077.

付佳瑶,郑兰兵.双相情感障碍的研究进展J.临床医学进展,2024,14(07):1328-1333.DOI:10.12677/acm.2024.1472151.

Shobassy,Ahmad.Elderly Bipolar DisorderJ.CURRENT PSYCHIATRYREPORTS,2021,23(02).DOI:10.1007/s11920-020-01216-6.

刘端烨,陈立哲.基于Unity3D的RPG类游戏关键技术实现J.计算机科学与应用,2022,12(11):2460-2471.DOI:10.12677/CSA.2022.1211252.

胥恒,龚禹萌,张爱莉.面向文化遗产教育的严肃游戏设计研究J.艺术设计研究,2024,(04):87-94.

杨淮敏,邱树伟.基于Unity3D的冒险游戏的设计与实现J.现代计算机,2023,29(13):73-78.DOI:10.3969/j.issn.1007‑1423.2023.13.013.

申丽丽.基于可视化设计的Unity游戏实现------以游戏《佩克斯乐园》为例D.浙江省:浙江师范大学,2021.

马晓萍,轩莹莹.基于Unity 3D的电子游戏设计与实现J.电子技术(上海),2024,53(06):75-79.

刘宁晖,宋瑾钰.基于Unity3D的文字冒险游戏的设计与开发J.软件工程与应用,2022,11(04):779-787.DOI:10.12677/SEA.2022.114081.

Băicoianu, Alexandra,Dobre, Cosmin,Lopătaru, Mihnea, et al.AUTOMATA CONCEPTS OVER GAME DESIGN PROCESSJ.Bulletin of the Transilvania University of Brasov, Series III: Mathematics and Computer Science,2024,4(01):191-208.DOI:10.31926/but.mif.2024.4.66.1.14.

Aaryan Parab,Nikhil Rathod,Tanaya Patil, et al.A 3D Storyline Using Unity Game EngineC.2022:1-5.

李樊.基于Unity 3D的游戏场景设计J.自动化技术与应用,2023,42(04):180-182+186.DOI:10.20033/j.1003-7241.(2023)04-0180-04.

焦灵.Unity3D引擎RPG动作游戏设计J.电脑编程技巧与维护,2022,(03):141-143.

致 谢

本论文的顺利完成,离不开众多老师、同学、亲友的支持与帮助。在此,我谨向所有关心和指导过我的人致以最诚挚的感谢。

感谢软件学院的全体老师。在四年的本科学习中,老师们系统性地传授了软件工程理论与开发实践知识,为本次项目的技术实现奠定了坚实基础。学院提供的实验室资源与开发工具,保障了游戏原型的高效开发与测试。于此同时,感谢辅导员刘海蕾老师,她对我生活与学业的关怀让我在迷茫时找到方向。

特别感谢我的家人和朋友。感谢父母始终尊重我的选择,并在学业压力最大时给予我无条件的支持与鼓励;感谢好友在测试阶段积极参与,从玩家视角反馈了许多易用性问题,使游戏设计更加贴近用户需求。此外,必须感谢我的挚友为我提供的深切关怀。我们时常讨论、交谈,互相争执,也互相支持,是她让我不至于深陷焦虑与抑郁的深渊。

最后,向所有心理健康领域的从业者与研究者致敬。本文的灵感来源于社会对双相情感障碍的认知缺失,而相关心理学文献与案例数据为游戏叙事提供了科学依据。希望本研究的成果能为心理健康教育提供新的可能性。

毕业在即,谨以此文献给所有为科学与人文进步默默奉献的人。前路漫漫,愿不忘初心,砥砺前行!

相关推荐
程序员码歌7 小时前
我全程用 AI开发了一款微信小游戏,上线了
android·前端·游戏开发
SmalBox10 小时前
【节点】[Nand节点]原理解析与实际应用
unity3d·游戏开发·图形学
SmalBox2 天前
【节点】[IsNaN节点]原理解析与实际应用
unity3d·游戏开发·图形学
_ZHOURUI_H_2 天前
Unity MyFramework 用法说明(二十三):使用 PrefabPoolManager 复用预设实例
unity·游戏引擎·游戏开发·游戏ui·手游开发
SmalBox3 天前
【节点】[IsInfinite节点]原理解析与实际应用
unity3d·游戏开发·图形学
_zhourui_h_3 天前
Unity MyFramework 用法说明(二十二):使用 AudioManager 统一管理背景音乐与 2D/3D 音效
unity3d
SmalBox4 天前
【节点】[IsFrontFace节点]原理解析与实际应用
unity3d·游戏开发·图形学