| | |
| | | using UnityEditor; |
| | | using Snxxz.UI; |
| | | using UnityEngine.UI; |
| | | using TableConfig; |
| | | |
| | | public class NewBieGuideEditorWindow : EditorWindow |
| | | |
| | | public class NewBieGuideEditorWindow : EditorWindow
|
| | | { |
| | | [MenuItem("程序/新手调试器")] |
| | | public static void Create() |
| | | { |
| | | var window = GetWindow(typeof(NewBieGuideEditorWindow), false, "新手调试器") as NewBieGuideEditorWindow; |
| | | window.Show(); |
| | | window.autoRepaintOnSceneChange = true; |
| | | public static void Create()
|
| | | {
|
| | | var window = GetWindow(typeof(NewBieGuideEditorWindow), false, "新手调试器") as NewBieGuideEditorWindow;
|
| | | window.Show();
|
| | | window.autoRepaintOnSceneChange = true;
|
| | | }
|
| | |
|
| | | UIRoot m_UIRoot;
|
| | | UIRoot uiroot {
|
| | | get { return m_UIRoot ?? (m_UIRoot = FindObjectOfType<UIRoot>()); }
|
| | | set { m_UIRoot = value; }
|
| | | }
|
| | |
|
| | | string guideContent = string.Empty;
|
| | | Transform m_ClickTarget;
|
| | | NewBieGuideScriptableObject.ArrowPosition arrowPosition = NewBieGuideScriptableObject.ArrowPosition.None;
|
| | | NewBieGuideScriptableObject.SelectBoxPattern selectBox = NewBieGuideScriptableObject.SelectBoxPattern.Pattern1;
|
| | |
|
| | | GameObject selectBoxGameObject;
|
| | |
|
| | | GuideType guideType = GuideType.NewBie;
|
| | |
|
| | | int stepId = 0;
|
| | | int guideId = 0;
|
| | |
|
| | | GameObject newBieWin;
|
| | | Transform functionalUnLock;
|
| | | NewBieMask newbieMask;
|
| | | Transform newBiecontainerDialogue;
|
| | | Text newBieDialogueContent;
|
| | | RectTransform newBieImageHint;
|
| | | RectTransform newBieHintEffectContainer;
|
| | | RectTransform newBieContainerArrow;
|
| | | Image newBieArrowImage;
|
| | | RectTransform newbieUsherMMContainer;
|
| | |
|
| | | int voice = 0;
|
| | | int effect2 = 0;
|
| | | int usherAction = 0;
|
| | | bool clickAnyWhereComplete = false;
|
| | | bool pointerDownComplete = false;
|
| | | NewBieGuideScriptableObject.UsherOrientation usherOrientation = NewBieGuideScriptableObject.UsherOrientation.Normal;
|
| | |
|
| | | GameObject usherMM;
|
| | |
|
| | | GameObject recommendWin;
|
| | | FunctionalGuideBehaviour recommendBehaviour;
|
| | | RectTransform recommendImageHint;
|
| | |
|
| | | private void Update()
|
| | | {
|
| | | if (newbieMask != null && newBieImageHint != null)
|
| | | {
|
| | | newbieMask.mask.center = newBieImageHint.localPosition;
|
| | | newbieMask.mask.cell = newBieImageHint.sizeDelta;
|
| | | }
|
| | | }
|
| | |
|
| | | private void OnGUI()
|
| | | {
|
| | |
|
| | | EditorGUILayout.BeginVertical();
|
| | |
|
| | | EditorGUILayout.BeginHorizontal();
|
| | | EditorGUILayout.Space();
|
| | | guideType = GUILayout.Toggle(guideType == GuideType.NewBie, "新手引导") ? GuideType.NewBie : GuideType.Recommend;
|
| | | guideType = GUILayout.Toggle(guideType == GuideType.Recommend, "功能推荐") ? GuideType.Recommend : GuideType.NewBie;
|
| | | EditorGUILayout.Space();
|
| | | EditorGUILayout.EndHorizontal();
|
| | |
|
| | | GUILayout.Space(30);
|
| | |
|
| | | EditorGUILayout.BeginHorizontal();
|
| | | stepId = EditorGUILayout.IntField("步骤ID", stepId);
|
| | | if (GUILayout.Button("导入"))
|
| | | {
|
| | | switch (guideType)
|
| | | {
|
| | | case GuideType.NewBie:
|
| | | ImportNewBieConfig();
|
| | | break;
|
| | | case GuideType.Recommend:
|
| | | ImportRecommondConfig();
|
| | | break;
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | if (GUILayout.Button("保存"))
|
| | | {
|
| | | switch (guideType)
|
| | | {
|
| | | case GuideType.NewBie:
|
| | | ExportNewBieConfig();
|
| | | break;
|
| | | case GuideType.Recommend:
|
| | | ExportRecommondConfig();
|
| | | break;
|
| | | }
|
| | | }
|
| | |
|
| | | EditorGUILayout.EndHorizontal();
|
| | | guideContent = EditorGUILayout.TextField("引导内容", guideContent);
|
| | | m_ClickTarget = (Transform)EditorGUILayout.ObjectField("点击目标", m_ClickTarget, typeof(Transform), true);
|
| | |
|
| | | arrowPosition = (NewBieGuideScriptableObject.ArrowPosition)EditorGUILayout.EnumPopup("箭头方向", arrowPosition);
|
| | | selectBox = (NewBieGuideScriptableObject.SelectBoxPattern)EditorGUILayout.EnumPopup("选中框样式", selectBox);
|
| | |
|
| | | voice = EditorGUILayout.IntField("音效", voice);
|
| | | effect2 = EditorGUILayout.IntField("特效2", effect2);
|
| | |
|
| | | EditorGUILayout.BeginHorizontal();
|
| | |
|
| | | usherAction = EditorGUILayout.IntField("引导MM动作", usherAction);
|
| | | usherOrientation = (NewBieGuideScriptableObject.UsherOrientation)EditorGUILayout.EnumPopup("引导MM方向", usherOrientation);
|
| | | EditorGUILayout.EndHorizontal();
|
| | |
|
| | | clickAnyWhereComplete = EditorGUILayout.Toggle("点击任意位置完成引导", clickAnyWhereComplete);
|
| | | pointerDownComplete = EditorGUILayout.Toggle("鼠标按下即完成引导", pointerDownComplete);
|
| | |
|
| | | EditorGUILayout.Space();
|
| | | EditorGUILayout.Space();
|
| | | EditorGUILayout.Space();
|
| | |
|
| | | EditorGUILayout.BeginHorizontal();
|
| | |
|
| | | if (GUILayout.Button("重置所有引导"))
|
| | | {
|
| | | NewBieCenter.Instance.ResetAllGuides();
|
| | | }
|
| | |
|
| | | if (GUILayout.Button("结束所有引导"))
|
| | | {
|
| | | NewBieCenter.Instance.CompleteAllGuides();
|
| | | }
|
| | | EditorGUILayout.EndHorizontal();
|
| | |
|
| | | switch (guideType)
|
| | | {
|
| | | case GuideType.NewBie:
|
| | | DrawNewbieGuides();
|
| | | break;
|
| | | case GuideType.Recommend:
|
| | | DrawFunctionalGuides();
|
| | | break;
|
| | | }
|
| | |
|
| | | EditorGUILayout.EndVertical();
|
| | | } |
| | | |
| | | UIRoot m_UIRoot; |
| | | UIRoot uiroot { |
| | | get { return m_UIRoot ?? (m_UIRoot = FindObjectOfType<UIRoot>()); } |
| | | set { m_UIRoot = value; } |
| | | private void ImportNewBieConfig()
|
| | | {
|
| | | var fileName = StringUtility.Contact("NewBieGuideStep_", stepId, ".asset");
|
| | | var path = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath, "Refdata/ScriptableObject/SoNewBieGuide/", fileName);
|
| | | var so = AssetDatabase.LoadAssetAtPath<NewBieGuideScriptableObject>(path);
|
| | |
|
| | | if (newBieWin == null)
|
| | | {
|
| | | var newBieWin = FindObjectOfType<NewBieWin>();
|
| | | this.newBieWin = newBieWin != null ? newBieWin.gameObject : null;
|
| | |
|
| | | if (this.newBieWin == null)
|
| | | {
|
| | | var prefab = UILoader.LoadWindow("NewBieWin");
|
| | | this.newBieWin = GameObject.Instantiate(prefab) as GameObject;
|
| | | this.newBieWin.name = "NewBieWin";
|
| | |
|
| | | if (this.newBieWin != null)
|
| | | {
|
| | | uiroot = GameObject.FindObjectOfType<UIRoot>();
|
| | | if (uiroot == null)
|
| | | {
|
| | | var rootPrefab = BuiltInLoader.LoadPrefab("UIRoot");
|
| | | var root = GameObject.Instantiate(rootPrefab, Vector3.zero, Quaternion.identity);
|
| | | root.name = "UIRoot";
|
| | | uiroot = root.GetComponent<UIRoot>();
|
| | | }
|
| | |
|
| | | var parent = uiroot.systemCanvas.transform;
|
| | | (this.newBieWin.transform as RectTransform).MatchWhith(parent as RectTransform);
|
| | | PrefabUtility.DisconnectPrefabInstance(this.recommendWin);
|
| | | }
|
| | | }
|
| | |
|
| | | Selection.activeGameObject = this.newBieWin;
|
| | | this.functionalUnLock = this.newBieWin.GetComponent<Transform>("Container_Function");
|
| | | this.functionalUnLock.gameObject.SetActive(false);
|
| | | this.newbieMask = this.newBieWin.GetComponent<NewBieMask>("Container_Guide/Mask");
|
| | | this.newBiecontainerDialogue = this.newBieWin.GetComponent<Transform>("Container_Guide/Container_Dialogue");
|
| | | this.newBieDialogueContent = this.newBieWin.GetComponent<Text>("Container_Guide/Container_Dialogue/Txt_Dialogue");
|
| | | this.newBieImageHint = this.newBieWin.GetComponent<RectTransform>("Container_Guide/Container_ClickHint");
|
| | | this.newBieHintEffectContainer = this.newBieWin.GetComponent<RectTransform>("Container_Guide/Container_ClickHint/Img_Effect");
|
| | | this.newBieContainerArrow = this.newBieWin.GetComponent<RectTransform>("Container_Guide/Container_ClickHint/Container_Arrow");
|
| | | this.newBieArrowImage = this.newBieWin.GetComponent<Image>("Container_Guide/Container_ClickHint/Container_Arrow/Img_Arrow");
|
| | | this.newbieUsherMMContainer = this.newBieWin.GetComponent<RectTransform>("Container_Guide/Img_UsherMM");
|
| | | }
|
| | |
|
| | | if (so != null)
|
| | | {
|
| | | m_ClickTarget = uiroot.transform.Find(so.UIElementPath);
|
| | |
|
| | | newbieMask.mask.center = so.clickPosition;
|
| | | newbieMask.mask.cell = so.clickSize;
|
| | | newBiecontainerDialogue.localPosition = so.tipPosition;
|
| | | newBieDialogueContent.text = so.tipContent;
|
| | | newBieImageHint.localPosition = so.clickPosition;
|
| | | newBieImageHint.sizeDelta = so.clickSize;
|
| | | var selectBosAssetName = so.selectBox == 0 ? "SelectBox1" : "SelectBox2";
|
| | | var selectBoxGameObject = UIUtility.CreateWidget(selectBosAssetName, selectBosAssetName);
|
| | | ((RectTransform)selectBoxGameObject.transform).MatchWhith(newBieHintEffectContainer);
|
| | | newbieUsherMMContainer.localPosition = so.usherPosition;
|
| | | newbieUsherMMContainer.localEulerAngles = new Vector3(0, so.usherOrientation == 0 ? 0 : 180, 0);
|
| | | voice = so.voice;
|
| | | clickAnyWhereComplete = so.clickAnyWhereComplete;
|
| | | pointerDownComplete = so.pointerDownComplete;
|
| | |
|
| | | guideContent = so.tipContent;
|
| | |
|
| | | arrowPosition = so.arrowPosition;
|
| | | selectBox = so.selectBox;
|
| | | usherAction = so.usherAction;
|
| | | usherOrientation = so.usherOrientation;
|
| | |
|
| | | if (so.usherAction != 0)
|
| | | {
|
| | | if (usherMM != null)
|
| | | {
|
| | | GameObject.DestroyImmediate(usherMM);
|
| | | }
|
| | | usherMM = GetUsherMM(so.usherAction);
|
| | | usherMM.transform.SetParentEx(newbieUsherMMContainer, Vector3.zero, Vector3.zero, Vector3.one);
|
| | | usherMM.SetActive(true);
|
| | | }
|
| | |
|
| | | newBieContainerArrow.gameObject.SetActive(so.arrowPosition != NewBieGuideScriptableObject.ArrowPosition.None);
|
| | | if (so.arrowPosition != NewBieGuideScriptableObject.ArrowPosition.None)
|
| | | {
|
| | | switch (so.arrowPosition)
|
| | | {
|
| | | case NewBieGuideScriptableObject.ArrowPosition.Left:
|
| | | newBieContainerArrow.localPosition = so.clickPosition - new Vector2(so.clickSize.x * 0.5f + newBieContainerArrow.rect.width * 0.5f, 0f);
|
| | | newBieArrowImage.transform.localEulerAngles = new Vector3(0, 0, 90);
|
| | | break;
|
| | | case NewBieGuideScriptableObject.ArrowPosition.Right:
|
| | | newBieContainerArrow.localPosition = so.clickPosition + new Vector2(so.clickSize.x * 0.5f + newBieContainerArrow.rect.width * 0.5f, 0f);
|
| | | newBieArrowImage.transform.localEulerAngles = new Vector3(0, 0, 270);
|
| | | break;
|
| | | case NewBieGuideScriptableObject.ArrowPosition.Top:
|
| | | newBieContainerArrow.localPosition = so.clickPosition + new Vector2(0f, so.clickSize.y * 0.5f + newBieContainerArrow.rect.height * 0.5f);
|
| | | newBieArrowImage.transform.localEulerAngles = new Vector3(0, 0, 0);
|
| | | break;
|
| | | case NewBieGuideScriptableObject.ArrowPosition.Bottom:
|
| | | newBieContainerArrow.localPosition = so.clickPosition - new Vector2(0f, so.clickSize.y * 0.5f + newBieContainerArrow.rect.height * 0.5f);
|
| | | newBieArrowImage.transform.localEulerAngles = new Vector3(0, 0, 180);
|
| | | break;
|
| | | }
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | Repaint();
|
| | | } |
| | | |
| | | string guideContent = string.Empty; |
| | | Transform m_ClickTarget; |
| | | NewBieGuideScriptableObject.ArrowPosition arrowPosition = NewBieGuideScriptableObject.ArrowPosition.None; |
| | | NewBieGuideScriptableObject.SelectBoxPattern selectBox = NewBieGuideScriptableObject.SelectBoxPattern.Pattern1; |
| | | |
| | | GameObject selectBoxGameObject; |
| | | |
| | | GuideType guideType = GuideType.NewBie; |
| | | |
| | | int stepId = 0; |
| | | int guideId = 0; |
| | | |
| | | GameObject newBieWin; |
| | | Transform functionalUnLock; |
| | | NewBieMask newbieMask; |
| | | Transform newBiecontainerDialogue; |
| | | Text newBieDialogueContent; |
| | | RectTransform newBieImageHint; |
| | | RectTransform newBieHintEffectContainer; |
| | | RectTransform newBieContainerArrow; |
| | | Image newBieArrowImage; |
| | | RectTransform newbieUsherMMContainer; |
| | | |
| | | int voice = 0; |
| | | int effect2 = 0; |
| | | int usherAction = 0; |
| | | bool clickAnyWhereComplete = false; |
| | | bool pointerDownComplete = false; |
| | | NewBieGuideScriptableObject.UsherOrientation usherOrientation = NewBieGuideScriptableObject.UsherOrientation.Normal; |
| | | |
| | | GameObject usherMM; |
| | | |
| | | GameObject recommendWin; |
| | | FunctionalGuideBehaviour recommendBehaviour; |
| | | RectTransform recommendImageHint; |
| | | |
| | | private void Update() |
| | | { |
| | | if (newbieMask != null && newBieImageHint != null) |
| | | { |
| | | newbieMask.mask.center = newBieImageHint.localPosition; |
| | | newbieMask.mask.cell = newBieImageHint.sizeDelta; |
| | | } |
| | | private void ExportNewBieConfig()
|
| | | {
|
| | | var fileName = StringUtility.Contact("NewBieGuideStep_", stepId, ".asset");
|
| | | var path = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath, "Refdata/ScriptableObject/SoNewBieGuide/", fileName);
|
| | | AssetDatabase.DeleteAsset(path);
|
| | |
|
| | | var so = CreateInstance<NewBieGuideScriptableObject>();
|
| | | AssetDatabase.CreateAsset(so, path);
|
| | |
|
| | | if (newBieWin != null)
|
| | | {
|
| | | so.stepId = stepId;
|
| | | so.clickPosition = newBieImageHint.transform.localPosition;
|
| | | so.clickSize = newBieImageHint.sizeDelta;
|
| | | so.tipPosition = newBiecontainerDialogue.localPosition;
|
| | | so.tipContent = newBieDialogueContent.text;
|
| | | so.arrowPosition = arrowPosition;
|
| | | so.selectBox = selectBox;
|
| | | so.usherOrientation = usherOrientation;
|
| | | so.effect2 = effect2;
|
| | | so.usherPosition = newbieUsherMMContainer.localPosition;
|
| | | so.usherAction = usherAction;
|
| | | so.voice = voice;
|
| | | so.clickAnyWhereComplete = clickAnyWhereComplete;
|
| | | so.pointerDownComplete = pointerDownComplete;
|
| | | so.tipContent = guideContent;
|
| | |
|
| | | if (m_ClickTarget != null)
|
| | | {
|
| | | so.UIElementPath = UIUtility.GetUIElementRelativePath(uiroot, m_ClickTarget);
|
| | | }
|
| | | }
|
| | |
|
| | | AssetDatabase.Refresh();
|
| | | EditorUtility.SetDirty(so);
|
| | | AssetDatabase.SaveAssets();
|
| | | } |
| | | |
| | | private void OnGUI() |
| | | { |
| | | |
| | | EditorGUILayout.BeginVertical(); |
| | | |
| | | EditorGUILayout.BeginHorizontal(); |
| | | EditorGUILayout.Space(); |
| | | guideType = GUILayout.Toggle(guideType == GuideType.NewBie, "新手引导") ? GuideType.NewBie : GuideType.Recommend; |
| | | guideType = GUILayout.Toggle(guideType == GuideType.Recommend, "功能推荐") ? GuideType.Recommend : GuideType.NewBie; |
| | | EditorGUILayout.Space(); |
| | | EditorGUILayout.EndHorizontal(); |
| | | |
| | | GUILayout.Space(30); |
| | | |
| | | EditorGUILayout.BeginHorizontal(); |
| | | stepId = EditorGUILayout.IntField("步骤ID", stepId); |
| | | if (GUILayout.Button("导入")) |
| | | { |
| | | switch (guideType) |
| | | { |
| | | case GuideType.NewBie: |
| | | ImportNewBieConfig(); |
| | | break; |
| | | case GuideType.Recommend: |
| | | ImportRecommondConfig(); |
| | | break; |
| | | } |
| | | |
| | | } |
| | | |
| | | if (GUILayout.Button("保存")) |
| | | { |
| | | switch (guideType) |
| | | { |
| | | case GuideType.NewBie: |
| | | ExportNewBieConfig(); |
| | | break; |
| | | case GuideType.Recommend: |
| | | ExportRecommondConfig(); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | EditorGUILayout.EndHorizontal(); |
| | | guideContent = EditorGUILayout.TextField("引导内容", guideContent); |
| | | m_ClickTarget = (Transform)EditorGUILayout.ObjectField("点击目标", m_ClickTarget, typeof(Transform), true); |
| | | |
| | | arrowPosition = (NewBieGuideScriptableObject.ArrowPosition)EditorGUILayout.EnumPopup("箭头方向", arrowPosition); |
| | | selectBox = (NewBieGuideScriptableObject.SelectBoxPattern)EditorGUILayout.EnumPopup("选中框样式", selectBox); |
| | | |
| | | voice = EditorGUILayout.IntField("音效", voice); |
| | | effect2 = EditorGUILayout.IntField("特效2", effect2); |
| | | |
| | | EditorGUILayout.BeginHorizontal(); |
| | | |
| | | usherAction = EditorGUILayout.IntField("引导MM动作", usherAction); |
| | | usherOrientation = (NewBieGuideScriptableObject.UsherOrientation)EditorGUILayout.EnumPopup("引导MM方向", usherOrientation); |
| | | EditorGUILayout.EndHorizontal(); |
| | | |
| | | clickAnyWhereComplete = EditorGUILayout.Toggle("点击任意位置完成引导", clickAnyWhereComplete); |
| | | pointerDownComplete = EditorGUILayout.Toggle("鼠标按下即完成引导", pointerDownComplete); |
| | | |
| | | EditorGUILayout.Space(); |
| | | EditorGUILayout.Space(); |
| | | EditorGUILayout.Space(); |
| | | |
| | | EditorGUILayout.BeginHorizontal(); |
| | | |
| | | if (GUILayout.Button("重置所有引导")) |
| | | { |
| | | NewBieCenter.Instance.ResetAllGuides(); |
| | | } |
| | | |
| | | if (GUILayout.Button("结束所有引导")) |
| | | { |
| | | NewBieCenter.Instance.CompleteAllGuides(); |
| | | } |
| | | EditorGUILayout.EndHorizontal(); |
| | | |
| | | switch (guideType) |
| | | { |
| | | case GuideType.NewBie: |
| | | DrawNewbieGuides(); |
| | | break; |
| | | case GuideType.Recommend: |
| | | DrawFunctionalGuides(); |
| | | break; |
| | | } |
| | | |
| | | EditorGUILayout.EndVertical(); |
| | | private void ImportRecommondConfig()
|
| | | {
|
| | | var fileName = StringUtility.Contact("FunctionalGuideStep_", stepId, ".asset");
|
| | | var path = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath, "Refdata/ScriptableObject/SoNewBieGuide/", fileName);
|
| | | var so = AssetDatabase.LoadAssetAtPath<NewBieGuideScriptableObject>(path);
|
| | |
|
| | | if (recommendWin == null)
|
| | | {
|
| | | var recommendWin = FindObjectOfType<FunctionalGuideWin>();
|
| | | this.recommendWin = recommendWin != null ? recommendWin.gameObject : null;
|
| | |
|
| | | if (this.recommendWin == null)
|
| | | {
|
| | | var prefab = UILoader.LoadWindow("FunctionalGuideWin");
|
| | | this.recommendWin = GameObject.Instantiate(prefab) as GameObject;
|
| | | this.recommendWin.name = "FunctionalGuideWin";
|
| | |
|
| | | if (this.recommendWin != null)
|
| | | {
|
| | | uiroot = GameObject.FindObjectOfType<UIRoot>();
|
| | | if (uiroot == null)
|
| | | {
|
| | | var rootPrefab = BuiltInLoader.LoadPrefab("UIRoot");
|
| | | var root = GameObject.Instantiate(rootPrefab, Vector3.zero, Quaternion.identity);
|
| | | root.name = "UIRoot";
|
| | | uiroot = root.GetComponent<UIRoot>();
|
| | | }
|
| | |
|
| | | var parent = uiroot.systemCanvas.transform;
|
| | | (this.recommendWin.transform as RectTransform).MatchWhith(parent as RectTransform);
|
| | | PrefabUtility.DisconnectPrefabInstance(this.recommendWin);
|
| | | }
|
| | | }
|
| | |
|
| | | Selection.activeGameObject = this.recommendWin;
|
| | | var instance = UIUtility.CreateWidget("FunctionalGuideBehaviour", "FunctionalGuideBehaviour");
|
| | | var behaviourRectTransform = (RectTransform)instance.transform;
|
| | | recommendBehaviour = instance.GetComponent<FunctionalGuideBehaviour>();
|
| | | this.recommendWin.gameObject.SetActive(true);
|
| | | behaviourRectTransform.MatchWhith(this.recommendWin.transform as RectTransform);
|
| | | recommendBehaviour.gameObject.SetActive(true);
|
| | |
|
| | | this.recommendImageHint = this.recommendBehaviour.clickHintRoot;
|
| | | }
|
| | |
|
| | | if (so != null)
|
| | | {
|
| | | m_ClickTarget = uiroot.transform.Find(so.UIElementPath);
|
| | | recommendImageHint.transform.localPosition = so.clickPosition;
|
| | | recommendImageHint.sizeDelta = so.clickSize;
|
| | | guideContent = so.tipContent;
|
| | | arrowPosition = so.arrowPosition;
|
| | | selectBox = so.selectBox;
|
| | | effect2 = so.effect2;
|
| | | var selectBosAssetName = string.Empty;
|
| | | switch (so.selectBox)
|
| | | {
|
| | | case NewBieGuideScriptableObject.SelectBoxPattern.Pattern1:
|
| | | selectBosAssetName = "SelectBox1";
|
| | | break;
|
| | | case NewBieGuideScriptableObject.SelectBoxPattern.Pattern2:
|
| | | selectBosAssetName = "SelectBox2";
|
| | | break;
|
| | | case NewBieGuideScriptableObject.SelectBoxPattern.None:
|
| | | selectBosAssetName = string.Empty;
|
| | | break;
|
| | | }
|
| | |
|
| | | if (selectBoxGameObject != null)
|
| | | {
|
| | | DestroyImmediate(selectBoxGameObject);
|
| | | selectBoxGameObject = null;
|
| | | }
|
| | |
|
| | | if (!string.IsNullOrEmpty(selectBosAssetName))
|
| | | {
|
| | | selectBoxGameObject = UIUtility.CreateWidget(selectBosAssetName, selectBosAssetName);
|
| | | ((RectTransform)selectBoxGameObject.transform).MatchWhith(recommendImageHint);
|
| | | }
|
| | | }
|
| | |
|
| | | Repaint();
|
| | | } |
| | | |
| | | private void ImportNewBieConfig() |
| | | { |
| | | var fileName = StringUtility.Contact("NewBieGuideStep_", stepId, ".asset"); |
| | | var path = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath, "Refdata/ScriptableObject/SoNewBieGuide/", fileName); |
| | | var so = AssetDatabase.LoadAssetAtPath<NewBieGuideScriptableObject>(path); |
| | | |
| | | if (newBieWin == null) |
| | | { |
| | | var newBieWin = FindObjectOfType<NewBieWin>(); |
| | | this.newBieWin = newBieWin != null ? newBieWin.gameObject : null; |
| | | |
| | | if (this.newBieWin == null) |
| | | { |
| | | var prefab = UILoader.LoadWindow("NewBieWin"); |
| | | this.newBieWin = GameObject.Instantiate(prefab) as GameObject; |
| | | this.newBieWin.name = "NewBieWin"; |
| | | |
| | | if (this.newBieWin != null) |
| | | { |
| | | uiroot = GameObject.FindObjectOfType<UIRoot>(); |
| | | if (uiroot == null) |
| | | { |
| | | var rootPrefab = Resources.Load<GameObject>("UI/Prefabs/UIRoot"); |
| | | var root = GameObject.Instantiate(rootPrefab, Vector3.zero, Quaternion.identity); |
| | | root.name = "UIRoot"; |
| | | uiroot = root.GetComponent<UIRoot>(); |
| | | } |
| | | |
| | | var parent = uiroot.systemCanvas.transform; |
| | | (this.newBieWin.transform as RectTransform).MatchWhith(parent as RectTransform); |
| | | PrefabUtility.DisconnectPrefabInstance(this.recommendWin); |
| | | } |
| | | } |
| | | |
| | | Selection.activeGameObject = this.newBieWin; |
| | | this.functionalUnLock = this.newBieWin.GetComponent<Transform>("Container_Function"); |
| | | this.functionalUnLock.gameObject.SetActive(false); |
| | | this.newbieMask = this.newBieWin.GetComponent<NewBieMask>("Container_Guide/Mask"); |
| | | this.newBiecontainerDialogue = this.newBieWin.GetComponent<Transform>("Container_Guide/Container_Dialogue"); |
| | | this.newBieDialogueContent = this.newBieWin.GetComponent<Text>("Container_Guide/Container_Dialogue/Txt_Dialogue"); |
| | | this.newBieImageHint = this.newBieWin.GetComponent<RectTransform>("Container_Guide/Container_ClickHint"); |
| | | this.newBieHintEffectContainer = this.newBieWin.GetComponent<RectTransform>("Container_Guide/Container_ClickHint/Img_Effect"); |
| | | this.newBieContainerArrow = this.newBieWin.GetComponent<RectTransform>("Container_Guide/Container_ClickHint/Container_Arrow"); |
| | | this.newBieArrowImage = this.newBieWin.GetComponent<Image>("Container_Guide/Container_ClickHint/Container_Arrow/Img_Arrow"); |
| | | this.newbieUsherMMContainer = this.newBieWin.GetComponent<RectTransform>("Container_Guide/Img_UsherMM"); |
| | | } |
| | | |
| | | if (so != null) |
| | | { |
| | | m_ClickTarget = uiroot.transform.Find(so.UIElementPath); |
| | | |
| | | newbieMask.mask.center = so.clickPosition; |
| | | newbieMask.mask.cell = so.clickSize; |
| | | newBiecontainerDialogue.localPosition = so.tipPosition; |
| | | newBieDialogueContent.text = so.tipContent; |
| | | newBieImageHint.localPosition = so.clickPosition; |
| | | newBieImageHint.sizeDelta = so.clickSize; |
| | | var selectBosAssetName = so.selectBox == 0 ? "SelectBox1" : "SelectBox2"; |
| | | var selectBoxGameObject = UIUtility.CreateWidget(selectBosAssetName, selectBosAssetName); |
| | | ((RectTransform)selectBoxGameObject.transform).MatchWhith(newBieHintEffectContainer); |
| | | newbieUsherMMContainer.localPosition = so.usherPosition; |
| | | newbieUsherMMContainer.localEulerAngles = new Vector3(0, so.usherOrientation == 0 ? 0 : 180, 0); |
| | | voice = so.voice; |
| | | clickAnyWhereComplete = so.clickAnyWhereComplete; |
| | | pointerDownComplete = so.pointerDownComplete; |
| | | |
| | | guideContent = so.tipContent; |
| | | |
| | | arrowPosition = so.arrowPosition; |
| | | selectBox = so.selectBox; |
| | | usherAction = so.usherAction; |
| | | usherOrientation = so.usherOrientation; |
| | | |
| | | if (so.usherAction != 0) |
| | | { |
| | | if (usherMM != null) |
| | | { |
| | | GameObject.DestroyImmediate(usherMM); |
| | | } |
| | | usherMM = GetUsherMM(so.usherAction); |
| | | usherMM.transform.SetParentEx(newbieUsherMMContainer, Vector3.zero, Vector3.zero, Vector3.one); |
| | | usherMM.SetActive(true); |
| | | } |
| | | |
| | | newBieContainerArrow.gameObject.SetActive(so.arrowPosition != NewBieGuideScriptableObject.ArrowPosition.None); |
| | | if (so.arrowPosition != NewBieGuideScriptableObject.ArrowPosition.None) |
| | | { |
| | | switch (so.arrowPosition) |
| | | { |
| | | case NewBieGuideScriptableObject.ArrowPosition.Left: |
| | | newBieContainerArrow.localPosition = so.clickPosition - new Vector2(so.clickSize.x * 0.5f + newBieContainerArrow.rect.width * 0.5f, 0f); |
| | | newBieArrowImage.transform.localEulerAngles = new Vector3(0, 0, 90); |
| | | break; |
| | | case NewBieGuideScriptableObject.ArrowPosition.Right: |
| | | newBieContainerArrow.localPosition = so.clickPosition + new Vector2(so.clickSize.x * 0.5f + newBieContainerArrow.rect.width * 0.5f, 0f); |
| | | newBieArrowImage.transform.localEulerAngles = new Vector3(0, 0, 270); |
| | | break; |
| | | case NewBieGuideScriptableObject.ArrowPosition.Top: |
| | | newBieContainerArrow.localPosition = so.clickPosition + new Vector2(0f, so.clickSize.y * 0.5f + newBieContainerArrow.rect.height * 0.5f); |
| | | newBieArrowImage.transform.localEulerAngles = new Vector3(0, 0, 0); |
| | | break; |
| | | case NewBieGuideScriptableObject.ArrowPosition.Bottom: |
| | | newBieContainerArrow.localPosition = so.clickPosition - new Vector2(0f, so.clickSize.y * 0.5f + newBieContainerArrow.rect.height * 0.5f); |
| | | newBieArrowImage.transform.localEulerAngles = new Vector3(0, 0, 180); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | Repaint(); |
| | | private void ExportRecommondConfig()
|
| | | {
|
| | | var fileName = StringUtility.Contact("FunctionalGuideStep_", stepId, ".asset");
|
| | | var path = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath, "Refdata/ScriptableObject/SoNewBieGuide/", fileName);
|
| | | AssetDatabase.DeleteAsset(path);
|
| | |
|
| | | var so = CreateInstance<NewBieGuideScriptableObject>();
|
| | | AssetDatabase.CreateAsset(so, path);
|
| | |
|
| | | if (recommendBehaviour != null)
|
| | | {
|
| | | so.stepId = stepId;
|
| | | so.clickPosition = recommendImageHint.transform.localPosition;
|
| | | so.clickSize = recommendImageHint.sizeDelta;
|
| | | so.tipContent = guideContent;
|
| | | so.arrowPosition = arrowPosition;
|
| | | so.selectBox = selectBox;
|
| | | so.effect2 = effect2;
|
| | | if (m_ClickTarget != null)
|
| | | {
|
| | | so.UIElementPath = UIUtility.GetUIElementRelativePath(uiroot, m_ClickTarget);
|
| | | }
|
| | | }
|
| | |
|
| | | AssetDatabase.Refresh();
|
| | | EditorUtility.SetDirty(so);
|
| | | AssetDatabase.SaveAssets();
|
| | | } |
| | | |
| | | private void ExportNewBieConfig() |
| | | { |
| | | var fileName = StringUtility.Contact("NewBieGuideStep_", stepId, ".asset"); |
| | | var path = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath, "Refdata/ScriptableObject/SoNewBieGuide/", fileName); |
| | | AssetDatabase.DeleteAsset(path); |
| | | |
| | | var so = CreateInstance<NewBieGuideScriptableObject>(); |
| | | AssetDatabase.CreateAsset(so, path); |
| | | |
| | | if (newBieWin != null) |
| | | { |
| | | so.stepId = stepId; |
| | | so.clickPosition = newBieImageHint.transform.localPosition; |
| | | so.clickSize = newBieImageHint.sizeDelta; |
| | | so.tipPosition = newBiecontainerDialogue.localPosition; |
| | | so.tipContent = newBieDialogueContent.text; |
| | | so.arrowPosition = arrowPosition; |
| | | so.selectBox = selectBox; |
| | | so.usherOrientation = usherOrientation; |
| | | so.effect2 = effect2; |
| | | so.usherPosition = newbieUsherMMContainer.localPosition; |
| | | so.usherAction = usherAction; |
| | | so.voice = voice; |
| | | so.clickAnyWhereComplete = clickAnyWhereComplete; |
| | | so.pointerDownComplete = pointerDownComplete; |
| | | so.tipContent = guideContent; |
| | | |
| | | if (m_ClickTarget != null) |
| | | { |
| | | so.UIElementPath = UIUtility.GetUIElementRelativePath(uiroot, m_ClickTarget); |
| | | } |
| | | } |
| | | |
| | | AssetDatabase.Refresh(); |
| | | EditorUtility.SetDirty(so); |
| | | AssetDatabase.SaveAssets(); |
| | | private void StartNewBieGuide()
|
| | | {
|
| | | NewBieCenter.Instance.currentGuide = guideId;
|
| | | NewBieCenter.Instance.StartNewBieGuide(guideId);
|
| | | } |
| | | |
| | | private void ImportRecommondConfig() |
| | | { |
| | | var fileName = StringUtility.Contact("FunctionalGuideStep_", stepId, ".asset"); |
| | | var path = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath, "Refdata/ScriptableObject/SoNewBieGuide/", fileName); |
| | | var so = AssetDatabase.LoadAssetAtPath<NewBieGuideScriptableObject>(path); |
| | | |
| | | if (recommendWin == null) |
| | | { |
| | | var recommendWin = FindObjectOfType<FunctionalGuideWin>(); |
| | | this.recommendWin = recommendWin != null ? recommendWin.gameObject : null; |
| | | |
| | | if (this.recommendWin == null) |
| | | { |
| | | var prefab = UILoader.LoadWindow("FunctionalGuideWin"); |
| | | this.recommendWin = GameObject.Instantiate(prefab) as GameObject; |
| | | this.recommendWin.name = "FunctionalGuideWin"; |
| | | |
| | | if (this.recommendWin != null) |
| | | { |
| | | uiroot = GameObject.FindObjectOfType<UIRoot>(); |
| | | if (uiroot == null) |
| | | { |
| | | var rootPrefab = Resources.Load<GameObject>("UI/Prefabs/UIRoot"); |
| | | var root = GameObject.Instantiate(rootPrefab, Vector3.zero, Quaternion.identity); |
| | | root.name = "UIRoot"; |
| | | uiroot = root.GetComponent<UIRoot>(); |
| | | } |
| | | |
| | | var parent = uiroot.systemCanvas.transform; |
| | | (this.recommendWin.transform as RectTransform).MatchWhith(parent as RectTransform); |
| | | PrefabUtility.DisconnectPrefabInstance(this.recommendWin); |
| | | } |
| | | } |
| | | |
| | | Selection.activeGameObject = this.recommendWin; |
| | | var instance = UIUtility.CreateWidget("FunctionalGuideBehaviour", "FunctionalGuideBehaviour"); |
| | | var behaviourRectTransform = (RectTransform)instance.transform; |
| | | recommendBehaviour = instance.GetComponent<FunctionalGuideBehaviour>(); |
| | | this.recommendWin.gameObject.SetActive(true); |
| | | behaviourRectTransform.MatchWhith(this.recommendWin.transform as RectTransform); |
| | | recommendBehaviour.gameObject.SetActive(true); |
| | | |
| | | this.recommendImageHint = this.recommendBehaviour.clickHintRoot; |
| | | } |
| | | |
| | | if (so != null) |
| | | { |
| | | m_ClickTarget = uiroot.transform.Find(so.UIElementPath); |
| | | recommendImageHint.transform.localPosition = so.clickPosition; |
| | | recommendImageHint.sizeDelta = so.clickSize; |
| | | guideContent = so.tipContent; |
| | | arrowPosition = so.arrowPosition; |
| | | selectBox = so.selectBox; |
| | | var selectBosAssetName = string.Empty; |
| | | switch (so.selectBox) |
| | | { |
| | | case NewBieGuideScriptableObject.SelectBoxPattern.Pattern1: |
| | | selectBosAssetName = "SelectBox1"; |
| | | break; |
| | | case NewBieGuideScriptableObject.SelectBoxPattern.Pattern2: |
| | | selectBosAssetName = "SelectBox2"; |
| | | break; |
| | | case NewBieGuideScriptableObject.SelectBoxPattern.None: |
| | | selectBosAssetName = string.Empty; |
| | | break; |
| | | } |
| | | |
| | | if (selectBoxGameObject != null) |
| | | { |
| | | DestroyImmediate(selectBoxGameObject); |
| | | selectBoxGameObject = null; |
| | | } |
| | | |
| | | if (!string.IsNullOrEmpty(selectBosAssetName)) |
| | | { |
| | | selectBoxGameObject = UIUtility.CreateWidget(selectBosAssetName, selectBosAssetName); |
| | | ((RectTransform)selectBoxGameObject.transform).MatchWhith(recommendImageHint); |
| | | } |
| | | } |
| | | |
| | | Repaint(); |
| | | private void StartFunctionalGuide()
|
| | | {
|
| | | FunctionalGuideCenter.Instance.StartGuide(guideId);
|
| | | }
|
| | |
|
| | | private GameObject GetUsherMM(int _action)
|
| | | {
|
| | | var instance = UIUtility.CreateWidget("GuideUsher", "GuideUsher");
|
| | |
|
| | | return instance;
|
| | | } |
| | | |
| | | private void ExportRecommondConfig() |
| | | { |
| | | var fileName = StringUtility.Contact("FunctionalGuideStep_", stepId, ".asset"); |
| | | var path = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath, "Refdata/ScriptableObject/SoNewBieGuide/", fileName); |
| | | AssetDatabase.DeleteAsset(path); |
| | | |
| | | var so = CreateInstance<NewBieGuideScriptableObject>(); |
| | | AssetDatabase.CreateAsset(so, path); |
| | | |
| | | if (recommendBehaviour != null) |
| | | { |
| | | so.stepId = stepId; |
| | | so.clickPosition = recommendImageHint.transform.localPosition; |
| | | so.clickSize = recommendImageHint.sizeDelta; |
| | | so.tipContent = guideContent; |
| | | so.arrowPosition = arrowPosition; |
| | | so.selectBox = selectBox; |
| | | if (m_ClickTarget != null) |
| | | { |
| | | so.UIElementPath = UIUtility.GetUIElementRelativePath(uiroot, m_ClickTarget); |
| | | } |
| | | } |
| | | |
| | | AssetDatabase.Refresh(); |
| | | EditorUtility.SetDirty(so); |
| | | AssetDatabase.SaveAssets(); |
| | | } |
| | | |
| | | private void StartNewBieGuide() |
| | | { |
| | | NewBieCenter.Instance.currentGuide = guideId; |
| | | NewBieCenter.Instance.StartNewBieGuide(guideId); |
| | | } |
| | | |
| | | private void StartFunctionalGuide() |
| | | { |
| | | FunctionalGuideCenter.Instance.StartGuide(guideId); |
| | | } |
| | | |
| | | private GameObject GetUsherMM(int _action) |
| | | { |
| | | var instance = UIUtility.CreateWidget("GuideUsher", "GuideUsher"); |
| | | |
| | | return instance; |
| | | } |
| | | |
| | | enum GuideType |
| | | { |
| | | NewBie, //新手引导,半强制性的。 |
| | | Recommend,//功能性引导,推荐性的。 |
| | | enum GuideType
|
| | | {
|
| | | NewBie, //新手引导,半强制性的。
|
| | | Recommend,//功能性引导,推荐性的。
|
| | | } |
| | | |
| | | List<NewBieGuide> newbieGuides = null; |
| | | List<FunctionalGuide> functionalGuides = null; |
| | | List<FunctionalGuide> functionalGuides = null;
|
| | | private Vector2 scrollPosition; |
| | | |
| | | void DrawNewbieGuides() |
| | | { |
| | | if (ConfigManager.Instance.inited && newbieGuides == null) |
| | | { |
| | | newbieGuides = new List<NewBieGuide>(); |
| | | var guides = ConfigManager.Instance.GetAllValues<GuideConfig>(); |
| | | foreach (var config in guides) |
| | | { |
| | | if (config.Type == 1) |
| | | { |
| | | newbieGuides.Add(new NewBieGuide(config.ID)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (newbieGuides != null) |
| | | { |
| | | scrollPosition = GUILayout.BeginScrollView(scrollPosition, false, false); |
| | | foreach (var newbieGuide in newbieGuides) |
| | | { |
| | | EditorGUILayout.Space(); |
| | | EditorGUILayout.BeginHorizontal(); |
| | | |
| | | EditorGUILayout.Space(); |
| | | |
| | | EditorGUILayout.LabelField("半强制引导Id:" + newbieGuide.guideId); |
| | | |
| | | EditorGUILayout.Toggle("Completed", newbieGuide.completed); |
| | | |
| | | GUI.skin.button.normal.textColor = newbieGuide.guideId == NewBieCenter.Instance.currentGuide ? Color.red : Color.white; |
| | | |
| | | if (GUILayout.Button("开始")) |
| | | { |
| | | newbieGuide.Begin(); |
| | | } |
| | | |
| | | GUI.skin.button.normal.textColor = Color.white; |
| | | if (GUILayout.Button("完成")) |
| | | { |
| | | newbieGuide.Finish(); |
| | | } |
| | | |
| | | if (GUILayout.Button("重置")) |
| | | { |
| | | newbieGuide.Reset(); |
| | | } |
| | | |
| | | EditorGUILayout.Space(); |
| | | EditorGUILayout.EndHorizontal(); |
| | | } |
| | | |
| | | GUILayout.EndScrollView(); |
| | | } |
| | | |
| | | void DrawNewbieGuides()
|
| | | {
|
| | | if (ConfigInitiator.done && newbieGuides == null)
|
| | | {
|
| | | newbieGuides = new List<NewBieGuide>();
|
| | | var guides = GuideConfig.GetValues();
|
| | | foreach (var config in guides)
|
| | | {
|
| | | if (config.Type == 1)
|
| | | {
|
| | | newbieGuides.Add(new NewBieGuide(config.ID));
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | if (newbieGuides != null)
|
| | | {
|
| | | scrollPosition = GUILayout.BeginScrollView(scrollPosition, false, false);
|
| | | foreach (var newbieGuide in newbieGuides)
|
| | | {
|
| | | EditorGUILayout.Space();
|
| | | EditorGUILayout.BeginHorizontal();
|
| | |
|
| | | EditorGUILayout.Space();
|
| | |
|
| | | EditorGUILayout.LabelField("半强制引导Id:" + newbieGuide.guideId);
|
| | |
|
| | | EditorGUILayout.Toggle("Completed", newbieGuide.completed);
|
| | |
|
| | | GUI.skin.button.normal.textColor = newbieGuide.guideId == NewBieCenter.Instance.currentGuide ? Color.red : Color.white;
|
| | |
|
| | | if (GUILayout.Button("开始"))
|
| | | {
|
| | | newbieGuide.Begin();
|
| | | }
|
| | |
|
| | | GUI.skin.button.normal.textColor = Color.white;
|
| | | if (GUILayout.Button("完成"))
|
| | | {
|
| | | newbieGuide.Finish();
|
| | | }
|
| | |
|
| | | if (GUILayout.Button("重置"))
|
| | | {
|
| | | newbieGuide.Reset();
|
| | | }
|
| | |
|
| | | EditorGUILayout.Space();
|
| | | EditorGUILayout.EndHorizontal();
|
| | | }
|
| | |
|
| | | GUILayout.EndScrollView();
|
| | | }
|
| | |
|
| | | } |
| | | |
| | | void DrawFunctionalGuides() |
| | | { |
| | | if (ConfigManager.Instance.inited && functionalGuides == null) |
| | | { |
| | | functionalGuides = new List<FunctionalGuide>(); |
| | | var guides = ConfigManager.Instance.GetAllValues<GuideConfig>(); |
| | | foreach (var config in guides) |
| | | { |
| | | if (config.Type == 2) |
| | | { |
| | | functionalGuides.Add(new FunctionalGuide(config.ID)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (functionalGuides != null) |
| | | { |
| | | scrollPosition = GUILayout.BeginScrollView(scrollPosition, false, false); |
| | | foreach (var guide in functionalGuides) |
| | | { |
| | | EditorGUILayout.Space(); |
| | | EditorGUILayout.BeginHorizontal(); |
| | | |
| | | EditorGUILayout.Space(); |
| | | |
| | | EditorGUILayout.LabelField("自由引导Id:" + guide.guideId); |
| | | EditorGUILayout.Toggle("Completed", guide.completed); |
| | | |
| | | GUI.skin.button.normal.textColor = FunctionalGuideCenter.Instance.GetUnderwayGuides().Contains(guide.guideId) ? Color.red : Color.white; |
| | | |
| | | if (GUILayout.Button("开始")) |
| | | { |
| | | guide.Begin(); |
| | | } |
| | | |
| | | GUI.skin.button.normal.textColor = Color.white; |
| | | if (GUILayout.Button("完成")) |
| | | { |
| | | guide.Finish(); |
| | | } |
| | | |
| | | EditorGUILayout.Space(); |
| | | EditorGUILayout.EndHorizontal(); |
| | | } |
| | | |
| | | GUILayout.EndScrollView(); |
| | | } |
| | | |
| | | |
| | | void DrawFunctionalGuides()
|
| | | {
|
| | | if (ConfigInitiator.done && functionalGuides == null)
|
| | | {
|
| | | functionalGuides = new List<FunctionalGuide>();
|
| | | var guides = GuideConfig.GetValues();
|
| | | foreach (var config in guides)
|
| | | {
|
| | | if (config.Type == 2)
|
| | | {
|
| | | functionalGuides.Add(new FunctionalGuide(config.ID));
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | if (functionalGuides != null)
|
| | | {
|
| | | scrollPosition = GUILayout.BeginScrollView(scrollPosition, false, false);
|
| | | foreach (var guide in functionalGuides)
|
| | | {
|
| | | EditorGUILayout.Space();
|
| | | EditorGUILayout.BeginHorizontal();
|
| | |
|
| | | EditorGUILayout.Space();
|
| | |
|
| | | EditorGUILayout.LabelField("自由引导Id:" + guide.guideId);
|
| | | EditorGUILayout.Toggle("Completed", guide.completed);
|
| | |
|
| | | GUI.skin.button.normal.textColor = FunctionalGuideCenter.Instance.GetUnderwayGuides().Contains(guide.guideId) ? Color.red : Color.white;
|
| | |
|
| | | if (GUILayout.Button("开始"))
|
| | | {
|
| | | guide.Begin();
|
| | | }
|
| | |
|
| | | GUI.skin.button.normal.textColor = Color.white;
|
| | | if (GUILayout.Button("完成"))
|
| | | {
|
| | | guide.Finish();
|
| | | }
|
| | |
|
| | | if (GUILayout.Button("重置"))
|
| | | {
|
| | | guide.Reset();
|
| | | }
|
| | |
|
| | | EditorGUILayout.Space();
|
| | | EditorGUILayout.EndHorizontal();
|
| | | }
|
| | |
|
| | | GUILayout.EndScrollView();
|
| | | }
|
| | |
|
| | |
|
| | | } |
| | | |
| | | public class NewBieGuide |
| | | { |
| | | public int guideId; |
| | | public bool completed { get { return NewBieCenter.Instance.completeGuidesBuf.Contains(guideId); } } |
| | | |
| | | public NewBieGuide(int _guideId) |
| | | { |
| | | guideId = _guideId; |
| | | } |
| | | |
| | | public void Begin() |
| | | { |
| | | NewBieCenter.Instance.StartNewBieGuide(guideId); |
| | | } |
| | | |
| | | public void Finish() |
| | | { |
| | | NewBieCenter.Instance.FinishNewBieGuide(guideId); |
| | | } |
| | | |
| | | public void Reset() |
| | | { |
| | | NewBieCenter.Instance.ResetGuide(guideId); |
| | | } |
| | | public class NewBieGuide
|
| | | {
|
| | | public int guideId;
|
| | | public bool completed { get { return NewBieCenter.Instance.completeGuidesBuf.Contains(guideId); } }
|
| | |
|
| | | public NewBieGuide(int _guideId)
|
| | | {
|
| | | guideId = _guideId;
|
| | | }
|
| | |
|
| | | public void Begin()
|
| | | {
|
| | | NewBieCenter.Instance.StartNewBieGuide(guideId);
|
| | | }
|
| | |
|
| | | public void Finish()
|
| | | {
|
| | | NewBieCenter.Instance.FinishNewBieGuide(guideId);
|
| | | }
|
| | |
|
| | | public void Reset()
|
| | | {
|
| | | NewBieCenter.Instance.ResetGuide(guideId);
|
| | | }
|
| | | } |
| | | |
| | | public class FunctionalGuide |
| | | { |
| | | public int guideId; |
| | | public bool completed { get { return NewBieCenter.Instance.completeGuidesBuf.Contains(guideId); } } |
| | | |
| | | public FunctionalGuide(int _guideId) |
| | | { |
| | | guideId = _guideId; |
| | | } |
| | | |
| | | public void Begin() |
| | | { |
| | | FunctionalGuideCenter.Instance.StartGuide(guideId); |
| | | } |
| | | |
| | | public void Finish() |
| | | { |
| | | FunctionalGuideCenter.Instance.RemoveGuide(guideId); |
| | | } |
| | | |
| | | public class FunctionalGuide
|
| | | {
|
| | | public int guideId;
|
| | | public bool completed { get { return NewBieCenter.Instance.completeGuidesBuf.Contains(guideId); } }
|
| | |
|
| | | public FunctionalGuide(int _guideId)
|
| | | {
|
| | | guideId = _guideId;
|
| | | }
|
| | |
|
| | | public void Begin()
|
| | | {
|
| | | FunctionalGuideCenter.Instance.StartGuide(guideId);
|
| | | }
|
| | |
|
| | | public void Finish()
|
| | | {
|
| | | FunctionalGuideCenter.Instance.RemoveGuide(guideId);
|
| | | }
|
| | |
|
| | | public void Reset()
|
| | | {
|
| | | NewBieCenter.Instance.ResetGuide(guideId);
|
| | | }
|
| | |
|
| | | } |
| | | |
| | | |