GameFramework框架——打包、构建、热更知识点

本文详细介绍了Unity游戏的打包流程,包括单机版无服务器无热更新的打包步骤,以及网络游戏的热更新配置。在单机版打包中,涉及关闭编辑器资源模式、打包AB包、处理错误等;在网络游戏中,讲解了切换资源加载模式、配置服务器文件和客户端设置。同时,还解决了材质紫色问题,并提到了在MuMu模拟器上进行Android打包及HFS本地服务器的配置方法。
摘要由CSDN通过智能技术生成

目录

一、单机游戏版本打包(无服务器、无热更新)

1.关掉编辑器资源模式

 2. 资源模式为Package

3.打包AB包

4. 找到Package下相应打包目标系统(Android)的文件拷贝到StreamingAssets下

5.  把PlayerSetting转到Android平台(如果你是其他平台,则上面的AB文件需要去到相应的Package/平台/下拷贝到StreamingAssets),然后构建Build,在模拟器或真机运行。

6. 你会发现有报错,是飞机预制体 PlayerShit导致的,原因:Mesh Collider 不支持 顶点过多的网格 使用convert模式,提示你给网格减面。

7. 为player_ship_collider减面后,必须重新打包一次,并将其内容重新拷贝到StreamingAssets。(注意不要去错地方拷贝)

二、网络游戏构建(*热更新)

1、取消掉Editor Resource Mode

2、改为Updated模式资源加载

3、打AB包

4、 配置服务器相关文件

5、配置客户端

解决紫色问题

三、MuMu模拟器&Android打包热更&HFS本地服务器


一、单机游戏版本打包(无服务器、无热更新)

1.关掉编辑器资源模式

 2. 资源模式为Package

3.打包AB包

选中一个Output目录,放Assets目录外。

输出目录(Output Directory)用于指定构建过程的结果输出目录(手动输入的话,记得按下回车键 ^_^),请确保具有访问此目录的权限且具有足够的磁盘空间。

  • Working Path:Unity 生成 AssetBundle 时的工作目录。
  • Output Package Path:为单机模式生成的文件的所在目录,若游戏是单机游戏,生成结束后将此目录中对应平台的文件拷贝至 StreamingAssets 后构建 App 即可。
  • Output FullPath:为可更新模式生成的完整文件包的所在目录,若游戏是网络游戏,生成结束后应将此目录上传至资源服务器,供玩家下载用。
  • Output Packed Path:为可更新模式生成的文件的所在目录,若游戏是网络游戏,生成结束后将此目录中对应平台的文件拷贝至 StreamingAssets 后构建 App 即可。一个 AssetBundle 是否会生成到 Output Packed Path,取决与这个 AssetBundle 是否在 AssetBundle 编辑工具中被标记为 Packed

4. 找到Package下相应打包目标系统(Android)的文件拷贝到StreamingAssets下

5.  把PlayerSetting转到Android平台(如果你是其他平台,则上面的AB文件需要去到相应的Package/平台/下拷贝到StreamingAssets),然后构建Build,在模拟器或真机运行。

6. 你会发现有报错,是飞机预制体 PlayerShit导致的,原因:Mesh Collider 不支持 顶点过多的网格 使用convert模式,提示你给网格减面。

7. 为player_ship_collider减面后,必须重新打包一次,并将其内容重新拷贝到StreamingAssets。(注意不要去错地方拷贝)

二、网络游戏构建(*热更新)

1、取消掉Editor Resource Mode

2、改为Updated模式资源加载

3

3、打AB包

4、 配置服务器相关文件

服务器我使用HFS,找到上方的文件夹,然后添加进服务器

在桌面新建一个version.txt文件,输入内容:

{
"ForceUpdateGame": false,
"LatestGameVersion": "0.1.0",
"InternalGameVersion": 1,
"InternalResourceVersion": 6,
"UpdatePrefixUri": "http://localhost/Windows",
"VersionListLength": 7158,
"VersionListHashCode": 1950701509,
"VersionListZipLength": 2648,
"VersionListZipHashCode": 915433963,
"END_OF_JSON":""
}

这个文件的key名是GF框架的VersionInfo类的属性名,一一对应上,版本不同可能有所不同的。

ForceUpdateGame 对应是否强制整包更新,默认为false 不整包的。整包更新 其实只是做了个跳转到指定url的功能,让玩家去官网下载之类的。这url怎么设置后面说到。

LatestGameVersion

InternalGameVersion 这个可能是内部的版本,暂时没看,暂定保持为1 即可。

InternalResourceVersion  (PS:此处已自增+1后的版本号,实际当前打包的是6)

UpdatePrefixUri

"VersionListLength": 7158,
"VersionListHashCode": 1950701509,
"VersionListZipLength": 2648,
"VersionListZipHashCode": 915433963,

对应地填上去,如 hash code 对应 VersionListHashCode,其中[...]的内容不用填写。

"END_OF_JSON":""  这玩意不用管,不知道是干嘛的,默认这样就行了。

将创建好的version.txt,放到服务器HFS根目录下,服务器配置完毕。

5、配置客户端

找到工程里的BuildInfo.txt文件,下面这个key的值为服务器的version.txt地址,上面你看到的10.0.0.2是我本地临时IP,但不知道怎么的用这个IP会很卡,就换成了localhost去指定。

关键配置好CheckVersionUrl即可,其他例如WindowsAppUrl是整包更新时跳转window的整包更新网址,其他同理(这里我随意搞了个哈哈)

这样就完成了!哈哈~

6、直接运行游戏,可以看到如下的效果~

 

解决紫色问题

紫色是因为材质的shader没有正常打包,加载到环境的问题。

例如背景变紫色,找到背景Backgound物体的shader

需要添加Unlit/Texture到Always Included Shaders列表里

然后去打包测试,发现新问题!没错,所有内置shader必须设置到Always Included Shaders才会正常!

最终大致要新增这3个shader,才解决我所见的问题

若需要打Android包到真机或模拟器测试,需要一个公网服务器IP,将HFS的IP设置为公网IP,同时相关的url都要改动,比如把上面一系列的localhost改为公网IP即可。本人暂时不打算这部分内容,可自行尝试。

三、MuMu模拟器&Android打包热更&HFS本地服务器

在第二步完成的基础上,我们可以打出Full下的Android文件AB包,设置到HFS(只是将Windows文件夹替换成Android即可),version.txt内容设置同windows一样(要注意一定要设置的是Android的配置!我就搞错了弄了很久才发现我设置了Windows的配置)

例如:BuildLog.txt文件 你搜索“hash code”内容,可能搜到的第一个就是windows的配置 如下,然后你就傻傻地填了这些数据然后就各种报错来了哈哈。(坑爹呢)

应该设置的是Android的配置信息:

记得要把Wrap文件完整地生成,不然也有一堆报错(wrap即使不生成也能正常打包,离谱~)

那2个配置文件里的设置,不能用localhost,必须要用模拟器的IP,Mumu模拟器是10.0.2.2,并且端口可以换一个防止端口冲突(默认是80)。例如下图 端口是6800

(这里IP不要填错了!是MUMU模拟器的IP地址:10.0.2.2 ,而不是HFS的IP!除非你自己有公网IP 这个我还没买服务器。后续测试)

C#配置 BuildInfo.txt 同理设置成 上面的MUMU模拟器的IP:HFS端口(即10.0.2.2:6800)的形式!   6800是HFS的端口!(我知道我很啰嗦但是这TM很重要!)

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
GameFramework是一个用于游戏开发的框架。它提供了一个完整的游戏开发流程,包括游戏设计、编程、资源管理、场景管理、消息处理、资源加载、网络通信等方面的功能和模块。 首先,GameFramework提供了游戏设计方面的支持。它定义了游戏的基本组成部分,如场景、角色、道具等,并提供了相应的类和接口来方便开发者进行游戏设计。 其次,GameFramework具备强大的编程支持。它包括了一系列的工具和类库,用于处理游戏逻辑,实现游戏的功能和特性。开发者可以通过编程来实现游戏中的动画效果、碰撞检测、物理模拟等。 GameFramework还提供了资源管理和加载的功能。开发者可以通过它来管理游戏中的资源文件,包括图片、音频、视频等,同时它也提供了快速的资源加载方式,提高游戏的性能和用户体验。 此外,GameFramework还包含了场景管理和消息处理的功能。它可以管理游戏中的不同场景,方便游戏的切换和管理。同时,它还能处理游戏中的消息通信,让不同的游戏对象之间进行交互和通信。 最后,GameFramework还具备网络通信的能力。开发者可以使用它来实现网络游戏中的客户端和服务器的通信,包括数据传输、消息处理等。 总的来说,GameFramework是一个功能完备的游戏开发框架,它为开发者提供了全面的游戏开发支持,使得游戏开发变得加高效和简单。无论是个人独立开发者还是大型游戏公司,都可以利用GameFramework来开发出优秀的游戏作品。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值