1A1 - API文档汉化 - 添加自定义页面
Updated a month 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文档汉化 - 枚举值
- A00-凯茜模组通用信息站汉化-首页
- A10-凯茜模组通用信息站汉化-安装
- A11-凯茜模组通用信息站汉化-技术支持常见问题
- A12-凯茜模组通用信息站汉化-补丁
- A20-凯茜模组通用信息站汉化-入门指南
- A30-凯茜模组通用信息站汉化-一般常见问题
- A40-凯茜模组通用信息站汉化-游戏机制
- A50-凯茜模组通用信息站汉化-装饰选项
- A60-凯茜模组通用信息站汉化-与原版游戏的差异
- A70-凯茜模组通用信息站汉化-解锁
- A71-凯茜模组通用信息站汉化-初始牌组
- A72-凯茜模组通用信息站汉化-道具
- A73-凯茜模组通用信息站汉化-卡牌
- A74-凯茜模组通用信息站汉化-伊耶拉克的细节
- A75-凯茜模组通用信息站汉化-挑战
- A76-凯茜模组通用信息站汉化-最终头目
- A77-凯茜模组通用信息站汉化-成就
- A80-凯茜模组通用信息站汉化-提示:挑战提示
- A81-凯茜模组通用信息站汉化-提示:地图节点
- A82-凯茜模组通用信息站汉化-提示:印记
- A90-凯茜模组通用信息站汉化-背景故事
- AA0-凯茜模组通用信息站汉化-ARG解谜
- AA1-凯茜模组通用信息站汉化-ARG事件概览
- AA2-凯茜模组通用信息站汉化-磐石卡牌
- AA3-凯茜模组通用信息站汉化-命令:DAMPNSOGGY
- AA4-凯茜模组通用信息站汉化-命令:RAZORSHARP
- AA5-凯茜模组通用信息站汉化-命令:PALESICKLY
- AA6-凯茜模组通用信息站汉化-命令:LEMONLIMES
- AA7-凯茜模组通用信息站汉化-命令:THESHIPWILLRISEAGAIN
- AA8-凯茜模组通用信息站汉化-频道:#prospector
- AA9-凯茜模组通用信息站汉化-频道:#angler
- AAA-凯茜模组通用信息站汉化-频道:#trader
- AAB-凯茜模组通用信息站汉化-频道:#_-_-_-_-_
- AAC-凯茜模组通用信息站汉化-管理员笔记
- AAD-凯茜模组通用信息站汉化-木雕师的消息
- AAE-凯茜模组通用信息站汉化-提示和工具
- AAF-凯茜模组通用信息站汉化-ARG文档
- AAG-凯茜模组通用信息站汉化-前传ARG
- AB0-凯茜模组通用信息站汉化-趣事:名人堂
- AB1-凯茜模组通用信息站汉化-趣事:耻辱柱
- AB2-凯茜模组通用信息站汉化-趣事:以及其他有趣内容……
- AB3-凯茜模组通用信息站汉化-趣事:全挑战模式胜利记录
- ABC-凯茜模组通用信息站汉化-趣事:解谜和游戏
- AC0-凯茜模组通用信息站汉化-“作弊”:存档修改
- AC1-凯茜模组通用信息站汉化-“作弊”:重复读档
- AD0-凯茜模组通用信息站汉化-漏洞和代码注释