|
61 | 61 |
|
62 | 62 | ## 构建模板前后不同时机的钩子
|
63 | 63 |
|
64 |
| -有时候简单的覆盖可能并不能满足开发者复杂的修改需要,在构建时提供的不同时机钩子允许开发者使用C#代码来替换或变更是更灵活自由的方案,我们提供了 [BuildTemplateHelper](#buildtemplatehelper介绍) 工具类来便捷的实现这一能力。 |
| 64 | +有时候简单的覆盖可能并不能满足开发者复杂的修改需要,在构建时提供的不同时机钩子允许开发者使用C#代码来替换或变更是更灵活自由的方案,我们提供了 [BuildTemplateHelper](#buildtemplatehelper介绍) 工具类来便捷的获得三个目录的绝对路径。 |
65 | 65 |
|
66 | 66 | ### 钩子介绍
|
67 | 67 |
|
@@ -91,13 +91,73 @@ Assets
|
91 | 91 |
|
92 | 92 | ```c#
|
93 | 93 | // 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 | +} |
94 | 137 |
|
95 |
| -// code... |
96 | 138 |
|
97 | 139 | ```
|
98 | 140 |
|
99 | 141 | ### BuildTemplateHelper介绍
|
100 | 142 |
|
101 |
| -请使用 BuildTemplateHelper 提供的资源访问接口,搭配[钩子介绍](#钩子介绍)小节中的不同阶段,可以任意的对你的 `wechat-default(标准模板)`、`template(自定义模板)`、`wechat/minigame(导出产物)` 中进行新的脚本创建、已有脚本中局部代码的文本替换(例如使用正则替换)甚至是图片等资源的变更。 |
| 143 | +BuildTemplateHelper 为你便捷的提供了各个目录的绝对路径: |
102 | 144 |
|
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