StarForce项目由StarForce项目源码和UGF源码 构成的 。
UGF中又包含有GF的dll,我所要做的就是把GF的dll换成GF源码好方便在StarForce项目中直接调试。
官网qa处提供了替换教程
我有选择困难症!到底该用那种方案呢?(ps:本着小心谨慎的原则我会选择第一种,当出于好奇心我也想使用一下unity在2017.3后加入的新特性ADF)
我使用了第二种。
首先拉取最新版本的StarForce,StarForce本身就把UGF当成是自身的子模块如果直接拉取子模块就不用单独拉UGF了。但那是原来,现在StarForce已经移除了子模块了
【自言自语中】
那么作者所说的upm是什么呢? 我也不知道在网上搜索了一番后出来一些闻所未闻的信息,比如upm是芬兰的跨国林业公司,upm是西班牙马德里理工大学,upm是马拉西亚博特拉大学(upm代表的大学就有两所了)。 程序相关的有专有名词:通用许可模块(Universal Permissive Modules),以及一种轻量级电子邮箱软件的文件后缀是upm。
所以作者说的upm到底是什么,这是服务于unity的框架,unity有urp,ugui,该不会。。。。
是的我想的没错,原来是这玩意UPM(Unity PackageManager)
总之是要先拉取StarForce项目的为了方便先把StarForce fork到我github的主页上。然后clone到我的本地上就好了。
打开项目后并打开upm发现GF已经被导入了(我使用的unity版本为unity2019.4.6f1 LTS版本)
跳转到包对应的目录下的找到library文件夹发现里面有GF的dll文件所以我们现在所处的包位置应该就是对应原来的之前提到的UGF包了。
现在要正式开始用源码替换UGF里的GF.dll了,我在本地拉一份GF源码。拉的源码一定的要和StartForce upm里面的UGF包的版本一致。我这里是2020.7.30.
我拉取的源码最新版和upm里面一致
在library目录下把GF.dll删除,并把源码拷贝过来。
重新回到unity里发现报了一大堆错(字面意思就是缺少了程序集的引用)
现在我们就用ADF重新来引用一下我们的GF源码。
由于现在GF是作为upm了不能直接把源码翻入package目录下了 所以只能把源码放在asset目录里了。
我们把刚才放入library下的源码文件夹删除,最终我放在这里。
在上面导入的源码根目录右键创建ADF文件
这个就是程序集关联名称
不是这个
GF.ADF需要勾选unsafe选项。然后让 UnityGameFramework.Runtime.asmdef 依赖 GameFramework.asmdef,让 UnityGameFramework.Editor.asmdef 同时依赖 GameFramework.asmdef 和 UnityGameFramework.Runtime.asmdef 即可.
我要进行如上操作时发现不能这样弄了,包里面的adf文件全是不可编辑的状态。
我经过努力寻找填坑的方法。找到两种解决方法。
1是在adf文件中直接修改配置。(这种强行改,没有解决不可操作的问题)。
2是把包复制到另一个文件夹下然后开upm窗口从我们的本地导入到upm中。这个方法我是从这个帖子中发现的https://zhuanlan.zhihu.com/p/97949167。
现在我的adf文件就正常了。
我发现另外一个事情就是这个文件夹现在已经可以创建新的文件夹了。
那我就要把源码路径从原来的assets目录下移动到packages下的UGF包里了。
现在unity没有报错了,现在就可以开始源码学习了。