前言当我返回来看我一年前陆陆续续开发的游戏脚本时发现我当时压根就没有进行分类,四五十个脚本就这么和和睦睦的挤在一起,现在随着对项目理解的加深,深刻意识到了一个合理的项目结构到底有多重要,故写下此篇文章,记录自己的学习与理解

定义

项目脚本结构对我而言就是Script文件夹下的文件层级。根据脚本的类别,所属场景等对脚本进行合理分类。
在游戏项目的开发中,一个合理的脚本分类结构可以提升开发时的效率和项目脚本的可读性。

目前我理解的常用分类方式

一、按脚本属性(功能/职责)分类

分类名称 英文标识 核心介绍 典型示例
核心管理 Manager 全局唯一、统筹管理游戏核心模块,控制整体流程与资源 GameManager(游戏总控)、AudioManager(音频管理)、DataManager(存档管理)、UIManager(UI管理)
实体控制 Controller 绑定到具体游戏对象,负责单个实体的行为、交互与状态控制 PlayerController(玩家控制)、EnemyController(敌人控制)、DoorController(门控制)、BulletController(子弹控制)
UI交互 UI 绑定到UI对象,处理界面显示、按钮点击等用户交互逻辑 UIMainMenu(主菜单)、UIGameHUD(游戏血条/分数)、UIConfirmPopup(确认弹窗)
数据模型 Model 无MonoBehaviour,纯数据存储结构,不包含业务逻辑 PlayerData(玩家数据)、ItemData(道具数据)、LevelConfig(关卡配置)
工具辅助 Util/Utility 静态通用工具类,提供跨模块复用的基础功能 MathUtil(数学计算)、SaveLoadUtil(存档读档)、StringUtil(字符串处理)
特效动画 Effect 绑定到特效/动画对象,控制视觉动效、音效同步与销毁 EffectController(爆炸特效)、CameraShake(相机震动)、AnimationTrigger(动画事件)

二、按脚本作用的物体分类

分类名称 核心介绍 典型示例
玩家 专门作用于玩家对象,处理玩家的所有行为与状态 PlayerController(玩家移动)、PlayerSkill(玩家技能)、PlayerHUD(玩家血条)
音频 作用于音频源/音频管理器,处理背景音乐、音效的播放与控制 AudioManager(音频总控)、AudioTrigger(音效触发)、BGMController(背景音乐切换)
相机 作用于相机对象,控制相机跟随、视角切换、震动等效果 CameraFollow(相机跟随玩家)、CameraShake(相机震动)、UICamera(UI相机适配)
动画 作用于动画组件,处理角色/物体的动画播放、状态切换与事件 PlayerAnimator(玩家动画)、EnemyAnimator(敌人动画)、AnimationEvent(动画回调)
UI相关 作用于UI物体(按钮、文本、弹窗等),处理界面交互逻辑 UIButton(按钮点击)、UIText(文本更新)、UISlider(滑动条控制)
子弹 作用于子弹/炮弹对象,处理发射、碰撞、伤害、销毁逻辑 BulletController(子弹飞行)、BulletDamage(子弹伤害)、BulletPool(子弹对象池)
道具 作用于道具对象,处理道具拾取、使用、效果触发等逻辑 ItemPickup(道具拾取)、ItemUse(道具使用)、ItemEffect(道具效果)