Skip to content

为unity-il2cpp提供在手机上设置FPS的模块

License

Notifications You must be signed in to change notification settings

hexstr/UnityFPSUnlocker

Repository files navigation

UnityFPSUnlocker

README_EN README_JP

安装需求

  • 设备已安装 Magisk / KernelSU / APatch
  • 启用Zygisk (对于KernelSU / APatch用户 需要安装Zygisk Next)

附加需求

  • 对目标游戏启用Shamiko (Shamiko可以避免一些游戏对于Zygisk注入或SafetyNet的检测)

使用

若你的手机没有开启Zygisk,请先开启Zygisk后重启。当上述需求准备完毕后即可刷入UnityFPSUnlocker模块。在重启之前,先下载TargetList.json放入/data/local/tmp/TargetList.json,并修改你的配置。
模块会通过判断游戏数据目录是否存在/sdcard/Android/data/{包名}/files/il2cpp来自动加载。

{
  "global": {
    "delay": 10,
    "mod_opcode": true,
    "fps": 90,
    "scale": 1.0
  },
  "custom": {
    "com.random.package.name.a": {
      "fps": 60
    },
    "com.random.package.name.b": {
      "mod_opcode": false
    },
    "com.random.package.name.c": {
      "delay": 5
    }
  }
}

其中,global节点中的配置为:

  • fps 需要设置的fps,设置为0以禁用
  • delay 游戏载入后等待delay秒执行
  • mod_opcode 是否修改opcode,如果你发现游戏会重新锁定fps,可以把这项改为true,但由于修改内存,可能会被反作弊检测到
  • scale 设置分辨率的倍数,一般保持1.0即可,必须为小数。当前屏幕宽度 * scale x 当前屏幕高度 * scale

然后,custom节点中的配置会覆盖global中的配置单独生效:

  • key 包名,比如com.random.package.name.a
  • fps 同上
  • mod_opcode 同上
  • delay 同上
  • scale 同上

TargetList.json修改后可以搜索json 格式校验校验是否完整。修改后立即生效(模块版本>=1.8)。
可以在终端模拟器输入logcat -s UnityFPSUnlocker查看输入日志。

分辨率

最近发现BlueArchive最高分辨率只有1080P,在模拟器上有肉眼可见的锯齿,而且在16:10的比例下甚至像素点比16:9更少

2560x1600->1822x1138

对比

2560x1440->1920x1080

所以加上调整分辨率的功能,对比图如下

https://imgsli.com/MjI3NDQ2/0/1

https://imgsli.com/MjI3NDQ2/2/3

但是设置的时机需要尽可能早,也就是delay尽可能短,否则需要更改绘图选项中的任意一项后生效(比如开关一次抗锯齿

如果你不需要超分辨率,可以修改/sdcard/Android/data/com.nexon.bluearchive/files/DeviceOption,把Resolution修改为大于3即可,这样会走default分支(在函数GraphicsManager.CoSetScreenResolution()中)

  • 0: 1080P
  • 1: 720P
  • 2: 540P
  • 3: 480P
  • default default