WX-Game1/Assets/Scripts/MiniProgramNavigator_README.md

156 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 小程序跳转工具使用说明
## 快速开始
### 1. 设置默认AppID推荐
在游戏启动时设置一次默认AppID后续调用时无需每次都传AppID
```csharp
// 在GameLauncher或Start方法中调用
MiniProgramNavigator.SetDefaultAppId("wx1234567890abcdef");
```
### 2. 直接跳转到指定页面
最简单的方式,一行代码搞定:
```csharp
// 跳转到背包页面
MiniProgramNavigator.NavigateToBag();
// 跳转到打卡页面
MiniProgramNavigator.NavigateToDaka();
// 跳转到成就页面
MiniProgramNavigator.NavigateToAchieve();
// 跳转到排行页面
MiniProgramNavigator.NavigateToRank();
// 跳转到拍卖行页面
MiniProgramNavigator.NavigateToAuction();
// 跳转到动态页面
MiniProgramNavigator.NavigateToDynamics();
// 跳转到邮件页面
MiniProgramNavigator.NavigateToMail();
```
## 在按钮中绑定使用
### 方法一直接在Button的OnClick事件中调用
1. 选择你的Button对象
2. 在Inspector面板的Button组件中点击OnClick事件
3. 将包含脚本的GameObject拖拽到OnClick事件槽位
4. 在方法列表中选择对应的方法,例如:
- `MiniProgramNavigator_Example.OnBagButtonClick()` - 跳转背包
- `MiniProgramNavigator_Example.OnDakaButtonClick()` - 跳转打卡
- 等等...
### 方法二:在组件中直接调用
在你的组件脚本中添加跳转方法:
```csharp
public class BackpackComponent : MonoBehaviour
{
private void Awake()
{
Button btn = GetComponent<Button>();
if (btn != null)
{
btn.onClick.AddListener(() => {
// 跳转到背包页面
MiniProgramNavigator.NavigateToBag();
});
}
}
}
```
## 高级用法
### 带回调的跳转
```csharp
MiniProgramNavigator.NavigateToBag(
onSuccess: () => {
Debug.Log("成功跳转到背包页面");
// 可以在这里执行其他逻辑,比如保存游戏状态
},
onFail: (error) => {
Debug.LogError($"跳转失败: {error}");
// 可以在这里显示错误提示给用户
}
);
```
### 传递额外数据
```csharp
var extraData = new {
userId = "12345",
fromGame = true,
gameScore = 1000
};
MiniProgramNavigator.NavigateToAchieve(
extraData: extraData,
onSuccess: () => Debug.Log("跳转成功")
);
```
### 使用枚举方式跳转(类型安全)
```csharp
MiniProgramNavigator.NavigateToPage(
MiniProgramNavigator.MiniProgramPage.Bag
);
```
### 指定不同AppID
如果需要在运行时跳转到不同的小程序:
```csharp
// 覆盖默认AppID跳转到另一个小程序
MiniProgramNavigator.NavigateToBag(
appId: "wx9876543210fedcba" // 不同的AppID
);
```
## 页面路径常量
如果需要在其他地方使用页面路径,可以使用常量:
```csharp
string bagPath = MiniProgramNavigator.PagePath.Bag; // "pages/index/bag"
string dakaPath = MiniProgramNavigator.PagePath.Daka; // "pages/index/daka"
string achievePath = MiniProgramNavigator.PagePath.Achieve; // "pages/index/achieve"
// ... 等等
```
## 注意事项
1. **必须由用户触发**:跳转必须在用户点击等交互事件中调用,不能自动跳转
2. **会弹出确认弹窗**:微信会弹出确认弹窗,用户确认后才会跳转
3. **设置AppID**使用前必须先设置AppID通过`SetDefaultAppId`或每次调用时传入)
## 已实现的页面
- ✅ 背包页面 (`pages/index/bag`)
- ✅ 打卡页面 (`pages/index/daka`)
- ✅ 成就页面 (`pages/index/achieve`)
- ✅ 排行页面 (`pages/index/rank`)
- ✅ 拍卖行页面 (`pages/index/auction`)
- ✅ 动态页面 (`pages/index/dynamics`)
- ✅ 邮件页面 (`pages/index/mail`)