在我今天正式开始之前,我曾经尝试给《雪居之地》里面一个比较大的mod叫做《snow fall》做汉化mod。因此我了解到一个关键词叫做“Harmony”,并尝试搭建了一下汉化环境。但是我发现snow fall 或者说雪居之地似乎不是很支持中文mod,所以最终放弃了做汉化mod的想法。
今天在b站尝试搜索了一下相关教程,一眼看到 宵夜97 兄的视频:BV1Ri4y1Q7cj
并借此尝试给DreamQuest做mod,试试能不能做mod或者汉化之类的。
经过实践,我注意到:
1.BepInEx 的部分版本用在DreamQuest上会报错误,目前已知能够成功运行的版本是 BepInEx-Unity.Mono-win-x64-6.0.0-be.725+e1974e2,该版本是我在
https://builds.bepinex.dev/projects/bepinex_be 下载的#725。
2.UnityExplorer插件支持的Unity版本是从5.2开始到2021中的多数版本,而DreamQuest是 4.6.5f1 开发的,因此(也可能是 bepInEX6 和 UnityExplorer之间的版本问题)不能生效。后来我找到了:https://github.com/originalnicodr/CinematicUnityExplorer 。这个插件可以正常载入,但是似乎没有生效。
我新建项目的时候用的是.NET 3.5,并且添加了如下引用:
除了标记的,其他引用都在E:\Steam\steamapps\common\Dream Quest\Windows64_Data\Managed 下(都在 你的DreamQuest游戏根目录下)
点击查看代码
using System;
using System.Collections.Generic;
using System.Text;
using BepInEx;
using BepInEx.Unity.Mono;
using UnityEngine;
namespace HelloMod
{
[BepInPlugin("oz.gamePlugin.hellomod", "HelloMod", "0.0.1")]
public class HelloMod:BaseUnityPlugin
{
void Start()
{
Debug.Log("Hello World");//在 DreamQuest中使用 Debug.log 无效
Logger.LogInfo("Hello World");//非静态类中Log的方法
Vector2 basicBtnSize = new Vector2(3, 0.6f);//DreamQuest(以下简称 DQ)中一个基础的按钮控件尺寸
ShopDialogueText shopDialogueText = SDB.Text(8f, "Hello World", 48, Color.red);//使用DQ中提供所有UI的类 SDB 来创建一个Text
ShopDialogueButton helloWorldBtn = SDB.BasicButton(basicBtnSize, "Hello World", null);//使用DQ中提供所有UI的类 SDB 来创建一个基础按钮
helloWorldBtn.FontSize(48);//设置按钮的字号大小(DreamQuest中默认的字体是CustomFont)
ShopDialogueAligned align = SDB.Align(new ShopDialogueObject[] { shopDialogueText, helloWorldBtn }, "VP", 0.2f);//将上述的文本控件进行对齐,VP是垂直对齐,HP是水平对齐
align.CenterTo(new Vector3(-4.08f, -2.63f, 0));//将对齐控件整体移动到某点
}
}
}