anthrax 发表于 2024-7-15 18:27

客户端工程权限打点

游戏开发是个多角色参与协作的过程,涉及美术、筹谋、法式(处事端、客户端)、QA等。在这协作过程中如何进行必要代码权限管控,又能便利各个成员之间及时的在端内查看体验游戏呢?
项目中原本做法:将整个客户端工程仓库权限进行管控,只对客户端开发人员开放权限,其他成员要体验游戏通过自动构建出包(pc、android)进行体验。
这样做法问题:

[*]要体验效果,必需等待构建出包,需要必然等待时间,期间如果遇到开发提交的代码有误,导致无法出包、报错,就得排查、提交、出包。会很大影响其他成员的工作。
[*]美术端同学要在端内制作调整效果,就必需在客户端同学的电脑上完成或者得给美术端提供一系列东西去兼容适配,对整个团队工作流程和效率会发生很大的影响。
基于上述问题,考虑还是要基于客户端工程实时查看游戏体验、制作表示等更方面。但是对于权限如何进行管控呢。
其实这里所谓管控,主要就是管控代码。所以基于此考虑,对权限管控方案进行调整和优化,主要依赖于Unity 法式集和git。
具体方案:

[*]git打点

[*]将代码Scripts目录从客户端git工程中移除,这样客户端工程就能对全项目开放权限
[*]新建scripts仓库,作为子仓库,权限对客户端开放
[*]新建对应法式集dll仓库,作为子仓库,权限对全项目开放

这样客户端开发人员需要拉取客户端主仓库+Scripts子仓库,项目其他成员拉取客户端主仓库+法式集子仓库。这样区分之后,对于法式开发过程中git提交,就会分步操作,子仓库和主仓库分袂提交对应的内容。

[*]Scripts调整

[*]因为将Scripts转成dll, 会导致工程上prefab挂载的脚本在dll工程中丢掉(因为代码直接引用和dll引用GUID是纷歧样的)针对这个问题有两种解决方案:

[*]将挂载到prefab的脚本不进行管控,挪出Scripts目录, 放到主仓库统一目录中。
[*]将挂载到prefab的脚本用 新的脚本,担任原挂载脚本,放到主仓库中。例如原本脚本中挂载Ocean脚本,则在主仓库中新建OpenOcean担任Ocean,然后再挂载到对应的prefab上。




Scripts和dll两个仓库如何及时同步

[*]首先介绍下unity机制,在工程打开时,会自动生成更新工程中法式集对应的dll,目录地址为Library\ScriptAssemblies
[*]在项目专门打包机上执行两个仓库同步操作

[*]更新工程到最新,然后打开工程,则生成更新对应dll

[*]注:这里会遇到有的法式集没有更新的问题, 为了稳妥起见,在更新完代码打开工程之前,直接删除Library\ScriptAssemblies这个文件,则工程打开必然能确保dll全部生成。

[*]项目中一般城市用脚本进行开发(xlua、puerts),将这些脚本和配置文件(从头生成)走打包流程更新生成对应的Assetbundle
[*]将生成的Assetbundle和dll 遴选出来直接推送到dll仓库中。则其他成员更新到就是最新的脚本内容。

[*]这里可以将git仓库和jenkins进行联动, git上配置webhooks, 收到push推送,触发jenkins进行dll工程同步操作。
这样就可以及时的同步更新dll仓库, 这样能够在进行权限管控的同时,又能便利其他成员使用工程。
页: [1]
查看完整版本: 客户端工程权限打点