1.从零开始的UnityGameFramework使用教程(壹)
2.Unity-GameFramework框架(四)—— 对象池
3.游戏开发工具箱(4) 游戏框架秘籍——使用Game Framework进行资源更新(中一)
从零开始的UnityGameFramework使用教程(壹)
从零开始UnityGameFramework教程:入门篇
本文将带你通过一步步操作,从零开始在Unity环境中配置和使用UnityGameFramework。不涉及框架内部细节,专注于实际应用。
首先,如果你遇到错误或不清晰的源码ssm框架地方,欢迎指正,我会及时进行修正。我们从替换源码开始,通过E大GitHub获取源码,需删除原有GameFramework.dll并添加新创建的程序集定义。
接下来,模仿StarForce文件结构,复制GameEntry类并创建启动场景。组件获取就通过GameEntry.XXX来实现。数据表处理涉及原始样式、生成工具和资源优先级,需要将数据表文件和生成的易经测算源码代码文件放在相应位置。
流程组件加载中,我们首先加载一个场景,通过在Scripts/Procedure下的多个类中重写方法来控制流程。配置UI组件包括创建Canvas、菜单预制体和通用对话框。UI组件中的事件处理和音频配置也在这一阶段完成。
本地化组件在预加载流程中添加字典加载,更换Localization Helper并设置字体。声音组件的配置和背景音乐的使用,使游戏声音功能生效。最后,加载第一个实体,包括实体数据、逻辑分离,以及配置实体组件和组别。
打包发布前,需要在Editor文件夹设置GameFrameworkConfigs和资源管理。好卖的源码按照官方文档设置资源列表,打包流程并确保所有资源已正确配置。最后,通过添加闪屏和初始化资源流程,确保在运行时与编辑器模式相同。
通过以上步骤,你将逐步掌握UnityGameFramework的使用,为你的游戏开发打下坚实基础。
Unity-GameFramework框架(四)—— 对象池
对象池与引用池具有相似的功能,都是为了避免频繁创建和销毁对象而设计,常用于游戏实例中,并且加入了释放事件和更新机制。
引用池主要用于代码中频繁使用的对象,例如任务、事件参数以及各种模块信息。
获取对象池组件的成员函数可以在ObjectPoolComponent类中找到。
创建对象池时,逃少源码我们需要在源码中定义字典的key为名字和对象类型,value为对应类型的对象池。
创建的对象池统一放置在m_ObjectPools这个总的对象池中。
allowMultiSpawn表示是否允许对象被多次获取。
atutoReleaseInterval表示对象池自动释放可释放对象的间隔。
capacity表示对象池的容量,超过容量会自动释放对象。
expireTime表示对象池中对象的过期时间,到时间会自动释放。
priority表示对象池的优先级。
获取对象时,会根据传入的key查询value列表,循环查询对象是否被占用,如果没有被占用则返回。
IsInUse并不是bool类型管理,而是类似引用计数,将m_SpawnCount的奇迹97源码数加1,参数表示对象被占用的次数,这样做主要是为了兼容m_AllowMultiSpawn参数,以了解对象被占用的次数和是否被占用。
如果所有对象都被占用,会返回null,这时我们可以调用Register函数,多添加一个对象。
在注册对象时,如果超过了设置的容量,对象池会自动释放所有对象。
合理设置对象池容量和用完对象后进行释放是必要的。
在GF中,多键值对字典的数据结构继承了.Net的迭代器接口,Key对应一个GF自身实现的列表。
游戏开发工具箱(4) 游戏框架秘籍——使用Game Framework进行资源更新(中一)
在上文中,我们概述了游戏框架的基础和启动流程,接下来,我们将深入探讨E大开源的Unity通用游戏框架——Game Framework,它在资源管理和更新方面展现出高效性。框架结构与职责
Game Framework由两大部分构成:独立于Unity的纯C# Game Framework模块,以及封装Unity特性的Unity GameFramework模块。这种模块化设计确保了跨引擎的可复用性,只需替换Unity部分即可迁移至其他平台。 尽管更新频率不高,但Game Framework的设计具有通用性,确保在Unity更新大改动时,框架结构依然稳定,避免频繁添加新模块。 框架的核心职责在于提供底层模块,如流程管理、消息传递、文件管理与资源管理,而非游戏业务逻辑,如动态资源下载和更新,留给开发者更大的扩展空间。功能扩展与示例项目
Game Framework的接口设计便于开发者对其进行修改和扩展,尽管表格和本地化支持可能有待提升,但灵活性极高。官方示例项目Star Force在GitHub上供下载,它是Unity GameFramework的子模块,也可独立下载并集成到Unity .3.f1的工程中。资源管理与更新流程
Unity引擎通过封装,简化了游戏开发过程,提升效率。首先,将Unity GameFramework文件复制到项目文件夹,然后以管理员权限运行HFS Http文件服务器,配置BuildInfo.txt以指向资源服务器地址。 在资源打包阶段,AssetBundle会自动复制到StreamingAssets文件夹。Resource Editor工具提供直观操作,修改资源后记得保存。通过Resource Builder设置导出目录、压缩方式和版本信息,点击Build进行资源包生成。 资源包结构包括Package单机模式和Updatable可更新模式,我们选择Package模式打包,然后通过Build Settings调整分辨率,选择Windows平台打包游戏。运行新版本验证资源更新流程,包括本地资源服务器的配置和资源版本管理。资源更新关键步骤
打开导出资源目录,注意其文件结构,包含 BuildReport、Full、Package、Packed 和 Working 文件夹。
在BuildInfo.txt中配置资源服务器版本信息,客户端与服务器版本对比,下载必要资源。
整合资源包,完成后进入游戏,检查资源版本一致性。
资源更新成功后,飞机贴图变更,体验游戏资源动态更新的便利性。
困惑解答
对于GameFrameworkVersion.dat,它是资源版本的“数据库”,包含压缩和未压缩版本信息。GameFrameworkList.dat则记录游戏中已下载的资源,单机模式下不需要,但在更新模式下用于记录资源下载状态。 资源包整合是通过Game Framework的VFS实现的,减少了文件数量,优化性能。在ResourceCollection.xml中添加FileSystem属性配置资源包在虚拟文件系统中的结构。深入学习与源代码探索
通过官方示例深入了解资源更新流程,无需深入代码。未来文章将逐步深入到Game Framework源代码层面,搭建游戏框架。请关注,我们下期将继续解析Game Framework的实现细节。