新手引导模块为了完全解耦,需要自己的UI系统。

首先在Pathes里面声明好用作Guide的UI的路径。

1
2
3
4
private const string TUTORIAL_UI_FOLDER = PREFAB_UI_FOLDER + "Tutorial/";
public const string PREFAB_GUIDE_WELCOME = TUTORIAL_UI_FOLDER + "WelcomeView";
public const string PREFAB_GUIDE_HAND = TUTORIAL_UI_FOLDER + "Hand";
public const string PREFAB_GUIDE_HIGHLIGHT = TUTORIAL_UI_FOLDER + "HighLight";//这个Prefab是个空物体,Rect是Stretch模式

这里的UI使用Resources的API进行加载,根据实际情况进行替换。

GuideUIMgr

在Guide——Framework——文件夹内新建GuideUIMgr文件

1

GameRoot中调用Init方法

1
2
GuideUIMgr.Instance.Init(transform);//+++ 注意调用顺序
GuideMgr.Instance.InitGuide();

AutoDestroy

在Guide——Framework文件夹中新建AutoDestroy脚本,用来自动销毁没有被GuideUIMgr管理的UI

1
2
3
4
5
6
7
8
9
using UnityEngine;

public class AutoDestroy : MonoBehaviour
{
private void OnDisable()
{
Destroy(this.gameObject);
}
}

Hand组件

Hand组件控制“提示小手”的位置,“提示小手”是个复用性很高的组件,所以我们将一些重复逻辑封装一下。

这里根据需要,我们将Hand小手的pivot设在了左上角。

在Scripts——Guide——Business文件夹内,新建Module文件夹

将之前的HighLightTool脚本改名为HighLightModule,转移到Module文件夹内。

在Module文件夹内新建HandModule

1
2
3
4
5
6
7
```

# GuideUtility

在新手引导中,Highlight组件和Hand组件是频繁调用的,我们这里在Script——Guide文件夹中新建Utility文件夹,并在其中新建`GuideUtility`脚本

```csharp