1A1 - API文档汉化 - 添加自定义页面
Updated 6 days ago添加自定义页面
添加自定义章节
在极少数情况下,您可能需要向规则书添加一个全新的页面章节。由于该操作涉及较多技术细节,下文提供了如何正确设置新规则书章节的示例。
完成所有设置后,调用带有必要参数的RuleBookManager.New()即可实现功能。
RuleBookManager.New(
MyPluginGuid, // 模组的唯一标识符
PageRangeType.Boons, // 需要继承页面样式的PageRangeType枚举
"Mod Tribes", // 显示在章节标题末尾的子节名称
GetInsertPosition, // 确定自定义章节插入规则书位置的函数
CreatePages, // 用于创建自定义章节页面的函数
headerPrefix: null, // 可选参数,留空时将自动生成
getStartingNumberFunc: GetStartingNumber, // 可选参数,留空时起始编号默认为1
fillPageAction: FillPage // 可选参数,但如需显示自定义名称、描述等内容则必须设置
);
该方法将返回代表自定义章节的FullRuleBookRangeInfo对象,以便进行后续修改。
注意:创建自定义规则书章节时,可传入STATIC方法作为Func和Action参数。
// ---重要说明---
// 返回值和参数必须与Func的参数及返回值严格匹配
// 确定该章节应插入规则书的位置
// 由于我们使用BoonPage样式,此处会将页面插入规则书"奖励"章节之后
private static int GetInsertPosition(PageRangeInfo pageRangeInfo, List<RuleBookPageInfo> pages)
{
return pages.FindLastIndex(rbi => rbi.pagePrefab == pageRangeInfo.rangePrefab) + 1;
}
private static List<RuleBookPageInfo> CreatePages(RuleBookInfo instance, PageRangeInfo currentRange, AbilityMetaCategory metaCategory)
{
// 本示例为自定义族群添加规则书章节
// 为每个存在的自定义族群创建规则书页面,并将pageId设置为族群枚举以便后续调用
List<TribeManager.TribeInfo> allTribes = TribeManager.NewTribes.ToList();
List<RuleBookPageInfo> retval = new();
foreach (var tribe in allTribes)
{
RuleBookPageInfo page = new();
page.pageId = tribe.tribe.ToString();
retval.Add(page);
}
return retval;
}
private static int GetStartingNumber(List<RuleBookPageInfo> addedPages)
{
return (int)Tribe.NUM_TRIBES; // 由于仅处理模组族群,页面编号从7开始
}
private static void FillPage(RuleBookPage page, string pageId, object[] otherArgs)
{
// 修改页面描述时,必须按如下方式将页面转换为目标类型
if (page is BoonPage boonPage && int.TryParse(pageId, out int id))
{
TribeManager.TribeInfo tribe = TribeManager.NewTribes.FirstOrDefault(x => x.tribe == (Tribe)id);
if (tribe != null)
{
// 使用各族群的内部名称作为页面标题
// 同时移除名称中所有'tribe'字样使阅读更自然
boonPage.nameTextMesh.text = Localization.Translate(tribe.name.ToLowerInvariant().Replace("tribe", ""));
// 如需为各族群添加描述,可在此处设置
boonPage.descriptionTextMesh.text = "";
// 奖励页面包含两个渲染器(页面左右各一)
// 本示例中要求两者使用相同纹理
boonPage.iconRenderer.material.mainTexture = boonPage.iconRenderer2.material.mainTexture = tribe.icon.texture;
}
}
}
规则书页面的实用信息
填充自定义页面内容时,理解页面样式及可访问字段至关重要。
当自定义章节的FillPage()方法被调用时,系统仅会提供当前RuleBookPageInfo的特定部分信息。若需使用pageId之外的信息填充页面,必须了解数组中对象的排列顺序才能正确访问。
AbilityPage
能力图标纹理显示在页面左侧
otherArgs参数: headerText, ability, fillerAbilityIds
类字段:
- AbilityPageContent mainAbilityGroup
StatIconPage
属性图标纹理显示在图标名称左侧
otherArgs参数: headerText
类字段:
- Renderer iconRenderer
- TextMeshPro nameTextMesh
- TextMeshPro descriptionTextMesh
BoonPage
奖励纹理显示在页面左右两侧(右侧图标水平翻转)
otherArgs参数: headerText, boon
类字段:
- Renderer iconRenderer
- Renderer iconRenderer2
- TextMeshPro nameTextMesh
- TextMeshPro descriptionTextMesh
ItemPage
道具的rulebookSprite显示在页面左侧
otherArgs参数: headerText
类字段:
- Renderer iconRenderer
- TextMeshPro nameTextMesh
- TextMeshPro descriptionTextMesh
- Transform itemModelParent
- GameObject itemModel
Pages
- 0 - 邪恶冥刻模组简体中文语言包Wiki
- 100 - API文档汉化 - 首页
- 110 - API文档汉化 - 入门指南
- 120 - API文档汉化 - 卡牌
- 121 - API文档汉化 - 自定义卡牌费用系统
- 122 - API文档汉化 - 会说话的卡牌
- 123 - API文档汉化 - 自定义毛皮
- 130 - API文档汉化 - 能力
- 131 - API文档汉化 - 自定义触发器
- 132 - API文档汉化 - 自定义狙击逻辑
- 133 - API文档汉化 - 伤害护盾行为
- 134 - API文档汉化 - 卡槽修改功能
- 135 - API文档汉化 - 触发器与执行顺序
- 140 - API文档汉化 - 自定义/扩展属性
- 150 - API文档汉化 - 扬升(凯茜模组)
- 160 - API文档汉化 - 地图与遭遇战
- 170 - API文档汉化 - 对手
- 180 - API文档汉化 - 图腾
- 190 - API文档汉化 - 道具
- 1A0 - API文档汉化 - 规则书
- 1A1 - API文档汉化 - 添加自定义页面
- 1A2 - API文档汉化 - 添加文本重定向功能
- 1B0 - API文档汉化 - 本地化
- 1B0 - API文档汉化 - 声音
- 1B0 - API文档汉化 - 资产包
- 1C0 - API文档汉化 - 其他特性
- 200 - JSONLoader文档汉化 - Wiki
- 201 - JSONLoader文档汉化 - 枚举值