问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

CockleBurs:一个功能全面的 Unity 开源游戏开发框架

创作时间:
作者:
@小白创作中心

CockleBurs:一个功能全面的 Unity 开源游戏开发框架

引用
1
来源
1.
https://www.bilibili.com/opus/972841505983037463

CockleBurs 是一个功能全面的 Unity 完全免费开源游戏开发框架,旨在提高开发效率,简化游戏架构,实现模块化、可扩展的设计。它通过对 Unity 原生功能的扩展和封装,提供了多种高效工具和系统,涵盖了角色控制、生命周期管理、UI 定制、事件系统、网络功能等多方面内容。

核心角色与控制系统

在 CockleBurs 框架中,设计了四种核心角色,每种角色都有其独特的功能和行为逻辑,能够满足不同类型的游戏开发需求。

核心角色

  • 旁观者 (Spectator):负责观战和观察角色动作,没有直接控制的权限,通常用于镜头管理或观战模式。
  • 控制器 (Controller):作为游戏角色的控制逻辑,处理输入和角色的行为。可以通过继承实现 AI 或玩家控制器。
  • 棋子 (Pawn):游戏中的实际对象,代表角色实体,可以是可控角色或 AI 角色。
  • 角色控制器 (PlayerController):控制具体的玩家角色,通过与Pawn和Controller交互,实现角色的控制 移动、攻击等功能。

角色类实现

  • BPawn:代表基础的游戏角色,包含了角色的基本行为和属性。
  • BController:负责管理Pawn的输入与行为,通过脚本扩展来实现自定义行为。
  • PlayerController:状态机脚本系统,支持通过面板配置新增Action(动作),可以扩展不同的行为逻辑,自带基础Action 走、跑、跳等。
  • NetworkPawn(待定):提供网络同步功能的基础Pawn

控制系统特征功能

  1. PlayerController 的状态机模式:开发者可以使用Action系统来为角色配置不同的行为。通过状态机机制,PlayerController能够动态切换角色的行为状态,例如从行走状态切换到跑步状态,或从地面状态切换到跳跃状态。
  2. Controller 基于 CC(Character Controller)实现:使用 Unity 的CharacterController组件来处理物理碰撞和角色移动。开发者可以继承Controller类来创建 AI 控制器或玩家控制器,统一使用Move方法来处理角色的移动逻辑。
  3. PlayerCameraManager:管理控制器的摄像机以及旁观者模式下的摄像机视角,提供摄像机切换功能,确保角色在不同场景中的视角流畅过渡。

其他核心

  • CLz_MonoBehaviour:替代了 MonoBehaviour,提供了额外的功能,如缓存的 transform 和脚本图标
  • Editor:用于管理Behaviour 的检视窗口,使得检视器更加高效和定制化。 新的检视器属性(Inspector Attributes):为 [SerializeField] 提供了额外的功能,如只读模式、图层和标签下拉菜单、HDR 颜色等,使得在编辑器中的属性展示更加直观和灵活。 新的检视器属性
  • 提供属性:允许对属性进行自定义展示,包括标题、提示工具(Tooltips)、滑块、文本区域等, Condition Attributes):这些属性可以根据特定条件控制字段和属性的可见性和可编辑性 提供了一个简单高效的单例模式实现,方便管理全局唯一的对象实例。
  • LazyBehaviour:实现了延迟加载单例模式,在需要时才会初始化单例实例,以提高性能。
  • RectTransform:使得对 RectTransform 属性的访问更加简便,并且表现与编辑器中的 RectTransform 面板一致。

生命周期管理

CockleBurs 提供了一个独特的生命周期管理系统,将 Unity 的方法拆分为2个生命周期回调函数,使开发者可以更精确地控制组件的初始化和更新过程。这种设计能够提高组件的可控性,适用于需要复杂初始化逻辑或有特殊更新需求的游戏对象。

生命周期回调函数

以下是 CockleBurs 生命周期中的主要回调函数:

  • OnComponentEnable():组件启用时调用,类似于 Unity 的OnEnable(),用于处理组件的启用逻辑。
  • OnInitialization():初始化时调用,用于执行对象的初次设置和数据准备。
  • OnStart():启动时调用,与 Unity 的Start()类似,用于开始组件的核心逻辑。
  • OnPreUpdate()OnUpdate():Update()之前和每帧更新时调用,负责处理对象的帧更新逻辑。
  • OnPreFixedUpdate()OnFixedUpdate():FixedUpdate()之前和固定时间间隔更新时调用,用于处理物理更新或其他定时事件。
  • OnPostFixedUpdate()OnPostLateUpdate():用于在FixedUpdate()或LateUpdate()之后执行的操作。
  • OnSceneLoaded()OnSceneUnloaded():场景加载或卸载时调用,用于处理场景切换的逻辑。

通过这种细化的生命周期管理,CockleBurs 可以应对复杂的场景管理和对象生命周期控制需求。

CockleBurs Assembly

是一个程序集缓存系统,通过对程序集的缓存处理

控制台系统

是一个功能强大的控制台系统,支持实时调用静态方法、修改静态变量等功能。它为开发者提供了强大的调试工具,简化了游戏开发过程中的调试和测试工作。

  • GameDebug:允许开发者使用颜色标注的日志输出,增强了调试信息的可读性。GameDebug还可以同时显示在 Unity 控制台和框架的内置控制台中 还提供类似ue左侧显示蓝色Debug。
  • 静态方法调用和变量修改:开发者只需添加标识,即可在控制台中实时调用静态方法或修改静态变量,从而在游戏运行时进行灵活的调试操作。
  • GUI绘制
  • 回车确定输入
  • 根据输入显示建议
  • 上下键可以将建议输入到输入框中
  • Tab键可以补充输入的

旧版本

游戏管理器与初始化

类是 CockleBurs 框架的核心管理器,它统一了所有系统和 API 的访问接口,开发者可以通过语法快速调用各种功能。这极大地简化了 API 的调用流程,提供了更为统一的代码结构。

  • GameInitializer:负责在游戏启动时初始化所有系统和管理器,确保游戏在运行时一切准备就绪。

UI 定制与扩展

提供了丰富的 UI 定制功能和扩展,帮助开发者更轻松地实现复杂的 UI 效果。

  • UI 面板过渡:框架内置了简单的 UI 面板过渡效果,支持面板的平滑显示和隐藏。
  • GUI 扩展封装:对 Unity 的原生 GUI 系统进行了封装,提供了更加便捷的 API,样式。
  • Imge形状改变:允许开发者通过简单的配置改变 UI 图像的形状,而不需要复杂的自定义组件。
  • 程序化曲线UI(待定):跳动,特殊的效果

事件系统与状态机

CockleBurs 框架包含了一个功能强大的事件系统和状态机系统,能够帮助开发者轻松管理游戏中的各种事件和复杂的行为逻辑。

事件系统

框架提供了四种类型的事件系统,支持泛型、枚举等不同类型的事件注册与触发:

  • Generic Events:通用事件,适用于大多数场景。
  • Enum Events:基于枚举类型的事件系统,方便管理和触发特定类型的事件。
  • EventGen:提供事件生成的功能,使得事件的创建和管理更加便捷。
    关于监听事件
    旧版本新版本都是用Game.链式调用

状态机系统

CockleBurs 的状态机系统允许开发者管理游戏中的状态转换。这种状态机系统非常适合处理复杂的角色行为、游戏关卡逻辑等场景。

版本管理

是一个唯一的 ScriptableObject,用于版本管理与检测。在大型游戏开发项目中,确保不同版本之间的一致性是至关重要的。通过系统,开发者可以轻松管理项目的版本控制,确保游戏在不同平台和版本之间的兼容性。

系统模块

提供了一系列系统模块,用于扩展 Unity 引擎的功能:

  • Animator:包括AnimatorHash、EventOnEnter、PlaySoundOnEnter、AnimatorHashDebugger
  • Asset:基于Addressables和AssetBundle的资源管理系统 AssetBundle加载地图和mod
  • Audio:基于对象池的音频系统,简化了音效调用
  • ComponentSave:反序列化保存组件的变量,用于单例全局管理比 如角色基础数值 包含:JSON,SteamCloud,PlayerPrefs,Xml,Binary
  • Event:分发Event管理器 提供了四种事件类型,支持泛型与枚举编辑器Event配置
  • Localization:本地化系统,支持LocalizationSystem和LocalizeTMProFontEvent
  • MapScene:基于Addressables, ScriptableObject 的场景管理系统
  • ObjectPool:对象池管理,提升对象的复用效率
  • StateMachine:状态机系统,用于管理复杂的行为逻辑
  • Tag:基于 ScriptableObject 的自定义标签系统,比 Unity 官方标签系统更高效
  • TaskScheduler:简单的任务调度系统
  • Time:类似于 Unreal Engine 的Timer

ComponentSave
Animator

CocKleBurs.GameFrameWork.Editor

基础:全深黑主题 ,UnityEditorDarkMode边框黑和面板全黑 AssetBundleBuilder打包面板,ManualRefresh,TransPositionEditor,ScenePreview,CLZ可视化编程(已删除),行为树待定,EventEditor,PrefabEditor,SetDataEditor,SwitchToSceneView,UniqueHashIdEditor GameDebugEditor:你可以控制哪些GameDebug显示在编辑器里

CocKleBurs.Utils

CodeGen,Data,DataStructure,Interpolation,Quad,Serializer,Attributes,PathUtility,PrefabData
PathUtility:在这里你可以找到所有的编辑器扩展的路径,保存的路径等等 Attributes:可以看到所有的标识 Quad:提供基础的QuadTree Interpolation:提供SnapshotInterpolation,和简单的过渡

特殊: CocKleBurs GameFrameWork 面板 :配置Tag Event,预制体,SetData,基础预制体,场景管理,对象特征。。。。

CocKleBurs.Data

二进制,Steam,Xml等等...

TestRunne

目前只有一个对AdvancedTimerTests

团队协作

CocKleBurs.Notion提供指引脚本或者介绍 点击按钮跳转网页Notion指定页面介绍
未来增加Notion的数据库SO封装,增加一个汇报Bug给开发者的数据库

CocKleBurs.Plugins

Harmony,Facepunch
第三方(待定):SteamBuildUploader,UnityFolder

CocKleBurs.QualitySettings

开箱即用的画面设置(HDRP)将支持URP 和内置管线

CocKleBurs.Resources

包含一些Icons

CocKleBurs.Settings

包含一些编辑器保存

CocKleBurs.Steamworks

开箱即用的P2P 大厅 VoiceChat 专项服务器 包含一些Example对于Steam ChatManager FriendDetailsPanel LobbiesListManager SteamRelayServer 等等

提供SO架构

包含State Machines 常见Events Float,Int,Vector3,Vector2 和自定义

关于网络

关于网络 CocKleBurs框架有FishNet版本和Netick版本
那么他们有不同的特征:
FishNet:
CocKleBurs.Transport:KcpTransport,FishyUnityTransport,Edgegap KcpTransport,Voice,NetworkAudioSync,NetworkParticleSystem,EOSTransport ChatBehaviour,SimpleBandwidthDisplay不基于事件
Sync:SyncAudio,SyncCollectionViewer,SyncRenderer,SyncUnityEvent NetworkDiscoveryHud,NetworkDiscovery 对于编辑器扩展包括IL你可以看到每个RPC从哪里调用那个方法每个RPC的字节和同步变量的字节
提供不是Pro版本的延迟补偿 提供基础的组件同步物理 类似Mirror 等等 开箱即用
广播的二次封装
几个CCU测试的示例 和一个坦克示例 提供Oninput方法类似Fusion
示例
FishNet快速管理多个管理器 面板

对于FishNet和Netick都有的:
BaseEnity和NetworkEntity
CKBNetwork 提供对网络场景加载功能的简化访问 包括生成,场景跳转 NetworkRunner,NetworkEvents 类似Fusion的使用方式
编辑器效果更好的NetworkObject

Netick提供:
提供用法像FisnNet的访问方式和一些简化访问

其他(待定)

RuntimeGizmoAPI Replay回放API

CocKleBurs.Example

包含常见使用CocKleBurs GameFrameWork示例 ScriptTemplates

关于CocKleBurs框架

将会有一个完整流程使用CocKleBurs的多人FPS游戏验证框架内的所有功能,当完成后边开源集成进框架内,最后阶段便是可生产状态

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号