Skip to content

Commit ff1249a

Browse files
author
nebulaliu
committed
docs: build template
1 parent 3dd0600 commit ff1249a

File tree

1 file changed

+64
-4
lines changed

1 file changed

+64
-4
lines changed

Design/BuildTemplate.md

+64-4
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ wechat
6161

6262
## 构建模板前后不同时机的钩子
6363

64-
有时候简单的覆盖可能并不能满足开发者复杂的修改需要,在构建时提供的不同时机钩子允许开发者使用C#代码来替换或变更是更灵活自由的方案,我们提供了 [BuildTemplateHelper](#buildtemplatehelper介绍) 工具类来便捷的实现这一能力
64+
有时候简单的覆盖可能并不能满足开发者复杂的修改需要,在构建时提供的不同时机钩子允许开发者使用C#代码来替换或变更是更灵活自由的方案,我们提供了 [BuildTemplateHelper](#buildtemplatehelper介绍) 工具类来便捷的获得三个目录的绝对路径
6565

6666
### 钩子介绍
6767

@@ -91,13 +91,73 @@ Assets
9191

9292
```c#
9393
// plugin.cs
94+
using System.IO;
95+
using UnityEngine;
96+
using WeChatWASM;
97+
98+
/// <summary>
99+
/// 构建生命周期回调钩子
100+
/// 注意事项:
101+
/// 请创建脚本在 Editor (子)目录下;
102+
/// 回调钩子请使用 public 声明成员函数
103+
/// </summary>
104+
public class PluginDemo : LifeCycleBase
105+
{
106+
107+
public override void afterCopyDefault()
108+
{
109+
// code...
110+
Debug.Log("afterCopyDefault");
111+
}
112+
113+
public override void beforeCopyDefault()
114+
{
115+
// 可使用 Exception 阻止继续构建导出
116+
throw new System.Exception("Build Failed.");
117+
}
118+
119+
public override void beforeCoverTemplate()
120+
{
121+
// 读取你的自定义模板目录并对其中的资源做动态修改
122+
var tmp = BuildTemplateHelper.CustomTemplateDir;
123+
using (
124+
FileStream file = new FileStream(
125+
Path.Combine(tmp, "newFile.js"),
126+
FileMode.Create, FileAccess.Write))
127+
{
128+
using (StreamWriter writer = new StreamWriter(file))
129+
{
130+
writer.WriteLineAsync("Your Code Content.");
131+
}
132+
}
133+
// 尽管你在导出期间动态的创建/修改了自定义模板中的资源
134+
// 在导出结束后WXSDK会自动恢复你的修改
135+
}
136+
}
94137

95-
// code...
96138

97139
```
98140

99141
### BuildTemplateHelper介绍
100142

101-
请使用 BuildTemplateHelper 提供的资源访问接口,搭配[钩子介绍](#钩子介绍)小节中的不同阶段,可以任意的对你的 `wechat-default(标准模板)``template(自定义模板)``wechat/minigame(导出产物)` 中进行新的脚本创建、已有脚本中局部代码的文本替换(例如使用正则替换)甚至是图片等资源的变更。
143+
BuildTemplateHelper 为你便捷的提供了各个目录的绝对路径:
102144

103-
BuildTemplateHelper 为你提供了一个会**自动复原的“伪沙箱”环境**,在 BuildTemplateHelper 的操作下你可以任意的修改上述三者目录中的内容,在结束导出后不会真实的影响你的游戏工程内容,也不需要你进行资源还原,这对于你托管项目代码很便捷。
145+
```c#
146+
// wechat-default(标准模板)
147+
// 位于 WXSDK 目录下标准模板绝对路径
148+
string baseDir = BuildTemplateHelper.BaseDir;
149+
150+
151+
// template(自定义模板)
152+
// 游戏工程中 Assets/WX-WASM-SDK-V2/Editor/template/minigame 绝对路径
153+
string templateDir = BuildTemplateHelper.CustomTemplateDir;
154+
155+
156+
// wechat/minigame(导出产物)
157+
// 开发者在导出面板配置的导出路径的微信开发者工具打开的 minigame(默认) 绝对路径
158+
string outDir = BuildTemplateHelper.BaseDir;
159+
```
160+
161+
搭配[钩子介绍](#钩子介绍)小节中的不同阶段,可以任意的对你的 `wechat-default(标准模板)``template(自定义模板)``wechat/minigame(导出产物)` 中进行新的脚本创建、已有脚本中局部代码的文本替换(例如使用正则替换)甚至是图片等资源的变更。
162+
163+
在导出期间修改你的自定义模板,在结束导出后不会真实的影响你的游戏工程内容,WXSDK已经为你还原,这对于你托管项目代码很便捷。

0 commit comments

Comments
 (0)