1.StarForce导入GF源码

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没有报错了,现在就可以开始源码学习了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
下面是一个较为详细的StarForce_ILRuntime热更新教程: 1. 安装StarForce_ILRuntime插件 首先,在Unity编辑器中打开Asset Store,搜索并安装StarForce_ILRuntime插件。安装完成后,你会在Unity的菜单栏中看到一个名为“StarForce_ILRuntime”的选项。 2. 配置热更新工程 在Unity中,我们需要创建一个专门用于热更新的工程,这个工程需要包含一些必要的文件和目录,具体包括: - Hotfix目录:热更新的代码放在这个目录下,这个目录的名字和位置可以自己定义。 - AppDomainConfig.txt:存放ILRuntime的配置信息。 - Hotfix.dll:热更新代码编译后生成的DLL文件。 3. 配置ILRuntime 在热更新工程中,我们需要对ILRuntime进行配置,具体包括: - 配置AppDomainConfig.txt:这个文件中包含了ILRuntime的一些配置信息,比如要哪些DLL文件,哪些类型需要注册等。可以参考官方文档进行配置。 - 注册需要热更新的类型:在热更新工程中,我们需要手动注册需要热更新的类型,这些类型通常是游戏逻辑相关的类型,比如游戏控制器、模型、UI等。可以在代码中使用ILRuntime的RegisterCrossBindingAdaptor方法进行注册。 4. 编写热更新代码 在Hotfix目录中编写需要热更新的代码,代码的编写方式和普通的C#代码基本一致。需要注意的是,在热更新工程中,我们不能使用Unity的API和类型,需要使用ILRuntime提供的跨域适配器进行映射。 5. 编译热更新代码 在热更新工程中,我们需要使用ILRuntime提供的工具将热更新代码编译成DLL文件,并将DLL文件和其它资文件一起打包成一个AB文件。具体的打包方式可以参考官方文档。 6. 加载热更新资 在游戏运行时,我们需要加载热更新资,具体步骤如下: - 使用AssetBundle.LoadFromFileAsync方法加载AB文件。 - 使用AssetBundle.LoadAsset方法加载DLL文件,并调用ILRuntime的CLRRedirection.AddReference方法添加引用。 - 使用AssetBundle.LoadAsset方法加载热更新代码的入口类,并调用ILRuntime的AppDomain.Invoke方法执行入口方法。 7. 注意事项 在使用StarForce_ILRuntime进行热更新时,需要注意以下几点: - 热更新的代码不能使用Unity的API和类型。 - 热更新的代码需要使用ILRuntime提供的跨域适配器进行映射。 - 热更新的类型需要手动注册。 - 热更新代码的编译和打包需要使用ILRuntime提供的工具。 - 加载热更新资时需要注意依赖关系。 希望这个教程对你有所帮助。如果还有问题,请随时提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值